※ ChatGPTを利用し、要約された質問です(原文:syslog-ng make undefined)
syslog-ng makeでエラー発生:関数が定義されていない
このQ&Aのポイント
syslog-ngをソースインストールしようとしている際に、makeコマンドでエラーが発生してしまいます。
エラーメッセージには「undefined reference to」という関数が定義されていないというエラーが表示されます。
解決策として、syslog-ng関連のライブラリをリンクさせるか、定義されていない関数を削除することが考えられますが、関数の削除には影響の有無が分からないため、対応に悩んでいます。
syslog-ngをソースインストールしようとしているのですが、makeで失敗してしまいます。
「undefined reference to」は関数が定義されていないというエラーらしいですが、対応に悩んでいます。
syslog-ng関連のライブラリをリンクさせれば良いのでしょうか?
それとも定義されていない関数を削除すれば良いのでしょうか?
関数を削除する場合、影響の有無が分からないため削除できない状況です。
ご存知の方がおられましたら、教えていただけないでしょうか。
よろしくお願いいたします。
以下、環境とエラーメッセージです。
■環境
OS:CentOS-5.6
カーネル:2.6.18-238.el5
アーキテクチャ:x86_64
■インストールパス
eventlog:/mnt/syslog/eventlog
syslog-ng:/mnt/syslog/syslog-ng
■モジュールバージョン
eventlog:0.2.12
syslog-ng:3.3.7
gcc:gcc-4.1.2-54.el5
glib2:glib2-2.12.3-4.el5_3.1
glib2-devel-2.12.3-4.el5_3.1
openssl-devel:openssl-devel-0.9.8e-22.el5_8.4
■パス
EVTLOG_CFLAGS = -I/mnt/syslog/eventlog/src
EVTLOG_LIBS = -I/mnt/syslog/eventlog/src/.libs/
GLIB_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include
GLIB_LIBS = -Wl,--export-dynamic -pthread -L/lib64 -lgmodule-2.0 -ldl -lgthread-2.0 -lglib-2.0
■エラーメッセージ
pdbtool.c: In function ‘pdbtool_match’:
pdbtool.c:442: 警告: dereferencing type-punned pointer will break strict-aliasing rules
mv -f .deps/pdbtool-pdbtool.Tpo .deps/pdbtool-pdbtool.Po
/bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -Wno-pointer-sign -g -O2 -Wall -pthread -o pdbtool pdbtool-pdbtool.o libsyslog-ng-patterndb.a ../../lib/libsyslog-ng.la -lrt -lnsl -Wl,--export-dynamic -pthread -L/lib64 -lgmodule-2.0 -ldl -lgthread-2.0 -lglib-2.0 -I/mnt/syslog/eventlog/src/.libs/ -ldl -L/usr/kerberos/lib64 -lssl -lcrypto -ldl -lz
libtool: link: gcc -std=gnu99 -Wno-pointer-sign -g -O2 -Wall -pthread -o .libs/pdbtool pdbtool-pdbtool.o -Wl,--export-dynamic -pthread -I/mnt/syslog/eventlog/src/.libs/ libsyslog-ng-patterndb.a ../../lib/.libs/libsyslog-ng.so -lrt -lnsl -L/lib64 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -L/usr/kerberos/lib64 -lssl -lcrypto -ldl -lz -pthread -Wl,-rpath -Wl,/mnt/syslog/syslog-ng/lib
libsyslog-ng-patterndb.a(libsyslog_ng_patterndb_a-radix.o): In function `r_insert_node':
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:717: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:717: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:672: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:672: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:661: undefined reference to `evt_tag_str'
libsyslog-ng-patterndb.a(libsyslog_ng_patterndb_a-radix.o):/mnt/syslog/syslog-ng/modules/dbparser/radix.c:661: more undefined references to `evt_tag_str' follow
libsyslog-ng-patterndb.a(libsyslog_ng_patterndb_a-radix.o): In function `r_insert_node':
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:661: undefined reference to `evt_tag_int'
libsyslog-ng-patterndb.a(libsyslog_ng_patterndb_a-radix.o): In function `r_new_pnode':
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:371: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:401: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/radix.c:409: undefined reference to `evt_tag_str'
libsyslog-ng-patterndb.a(libsyslog_ng_patterndb_a-patterndb.o): In function `pattern_db_set_time':
/mnt/syslog/syslog-ng/modules/dbparser/patterndb.c:1409: undefined reference to `evt_tag_long'
libsyslog-ng-patterndb.a(libsyslog_ng_patterndb_a-patterndb.o): In function `pattern_db_timer_tick':
/mnt/syslog/syslog-ng/modules/dbparser/patterndb.c:1380: undefined reference to `evt_tag_long'
libsyslog-ng-patterndb.a(libsyslog_ng_patterndb_a-patterndb.o): In function `pdb_rule_set_load':
/mnt/syslog/syslog-ng/modules/dbparser/patterndb.c:1184: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/patterndb.c:1184: undefined reference to `evt_tag_str'
/mnt/syslog/syslog-ng/modules/dbparser/patterndb.c:1162: undefined reference to `evt_tag_errno'
/mnt/syslog/syslog-ng/modules/dbparser/patterndb.c:11
お礼
>wormholeさん ご回答、ありがとうございます。 >EVTLOG_LIBS = -I/mnt/syslog/eventlog/src/.libs/ 記載ミスでした。下記のように指定しました。 EVTLOG_LIBS = -I/mnt/syslog/eventlog/src/.libs/eventlog.a ライブラリ指定をあまり理解できておらず… 指定パスにインストールしたかったため、ソースインストールを選んだのですが今回はyumでインストールしました。 個人的に少し追ってみようと思います。