solaris 10(sparc 64bit)環境へのZabbix 3.4.1 インストール失敗
こんにちわ。
以下の状況で現在大変困っております。何かヒントでも頂ければ幸いです。
表記環境にzabbix環境をソースビルドしております。
zabbixのビルド中、configureにてエラーではじかれてしまいます。
configureの引数は、他のsolaris 10 32bit(VMware)でインストール成功した時と同じです。
まず普通にビルドした時は、"configure.logの内容①"にある様に、何故かデフォルトで64bit
モードでコンパイルしようとしています。でもmysql始めzabbix以外のモジュールは、デフォ
ルトで32bitモードでビルドされていますので、32bitのlibmysqlclient~を参照してエラーに
なっている様です。
そこで、configureを編集して強制的に32bitモードでビルドするように狙ってみましたが
結果は、"configure.logの内容②"の様に、今度はシンボル参照でエラーとなってしまい
完全にお手上げ状態になりました。
<前提条件>
・zabbix以外のモジュールは無事インストールと動作確認が出来ております。
・zabbix以外のモジュールは32bitモードでビルドされています。
<サーバ情報>
server-name# uname -a
SunOS server-name 5.10 Generic_144488-09 sun4u sparc SUNW,SPARC-Enterprise
server-name# isainfo -b
64
server-name# isainfo -v
64-bit sparcv9 applications
ima fmaf vis2 vis popc
32-bit sparc applications
ima fmaf vis2 vis popc v8plus div32 mul32
<その他の環境>
apache2 2.2.32(32bit)
mysql 5.6.25(32bit)
PHP 5.6.30(32bit)
■configure時のエラーメッセージ(①②共通)
------------------------------------------------------------------------------------------
server-name# ./configure --enable-server --enable-agent --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-mysql=/usr/local/mysql/bin/mysql_config
~
checking for -m64 compilation flag... yes
checking size of void *... 8
checking for mysql_config... /usr/local/mysql/bin/mysql_config
checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library
ncoob1-o-m#
↓
■configure.logの内容①
-------------------------------------------------------------------------------------
~
configure:8045: checking for mysql_config
configure:8075: result: /usr/local/mysql/bin/mysql_config
configure:8170: checking for main in -lmysqlclient
configure:8189: gcc -o conftest -m64 -g -O2 -I/usr/local/mysql/include -g -fabi-version=2 -fno-omit-frame-
pointer -fno-strict-aliasing -L/usr/local/mysql/lib conftest.c -lmysqlclient -lkvm -lm -lrt -lnsl -lkst
at -lsocket -lresolv >&5
ld: fatal: file /usr/local/mysql/lib/libmysqlclient.so: wrong ELF class: ELFCLASS32
ld: fatal: File processing errors. No output written to conftest
collect2: ld returned 1 exit status
configure:8189: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Zabbix"
| #define PACKAGE_TARNAME "zabbix"
| #define PACKAGE_VERSION "3.4.1"
~
-------------------------------------------------------------------------------------------------------
■configure.logの内容②(強制32bitモード)
-------------------------------------------------------------------------------------------------------
~
configure_32:8045: checking for mysql_config
configure_32:8075: result: /usr/local/mysql/bin/mysql_config
configure_32:8170: checking for main in -lmysqlclient
configure_32:8189: gcc -o conftest -m32 -g -O2 -I/usr/local/mysql/include -g -fabi-version=2 -fno-omit-fra
me-pointer -fno-strict-aliasing -L/usr/local/mysql/lib conftest.c -lmysqlclient -lkvm -lm -lrt -lnsl -l
kstat -lsocket -lresolv >&5
Undefined first referenced
symbol in file
operator new[](unsigned int) /usr/local/mysql/lib/libmysqlclient.so
operator new(unsigned int) /usr/local/mysql/lib/libmysqlclient.so
vtable for __cxxabiv1::__si_class_type_info/usr/local/mysql/lib/libmysqlclient.so
operator delete[](void*) /usr/local/mysql/lib/libmysqlclient.so
operator delete(void*) /usr/local/mysql/lib/libmysqlclient.so
vtable for __cxxabiv1::__vmi_class_type_info/usr/local/mysql/lib/libmysqlclient.so
vtable for __cxxabiv1::__class_type_info/usr/local/mysql/lib/libmysqlclient.so
__gxx_personality_v0 /usr/local/mysql/lib/libmysqlclient.so
__cxa_pure_virtual /usr/local/mysql/lib/libmysqlclient.so
ld: fatal: Symbol referencing errors. No output written to conftest
collect2: ld returned 1 exit status
configure_32:8189: $? = 1
TNK - 投稿数: 4769
libmysqlclient.soが、C++のライブラリを必要としていて、gccで
コンパイルをして、リンク(ld)の呼び出しでC++のライブラリがリ
ンクされていないので、Undefinedのエラーになっているように見
受けられます。
gccの代わりにg++を使うか、gccのままでリンクするライブラリと
して「-lstdc++」を追加すると改善するかもしれません。
syskan99 - 投稿数: 2
TNK 様
ありがとうございます!
configureを編集して強制的に32bitモードにさせて、環境変数CC、CXXに"gcc -lstdc++"でexportして無事configureが完了しました。
大変助かりました。