これらは、ソースからのZabbixコンパイルに関する既知の問題です。他のすべてのケースについては、既知の問題を参照してください。
HP-UXパッケージサイトhttp://hpux.connect.org.ukからPCREライブラリをインストールする場合(例えばpcre-8.42-ia64_64-11.31.depot
から)、64bit版のライブラリのみが/usr/local/lib/hpux64
ディレクトリにインストールされます。
この場合、エージェントのコンパイルを成功させるためには、以下のようにconfigure
スクリプトのオプションをカスタマイズする必要があります。
CFLAGS="+DD64" ./configure --enable-agent --with-libpcre-include=/usr/local/include --with-libpcre-lib=/usr/local/lib/hpux64
Zabbixは標準以外の場所にあるライブラリを指定できます。以下の例では、Zabbixは指定された非標準の場所からcurl-config
を実行し、その出力を使用して、使用する正しいlibcurlを決定します。
これは、システムにインストールされている唯一のlibcurlである場合に機能しますが、たとえば、パッケージマネージャーによって標準の場所に別のlibcurlがインストールされている場合は機能しません。これは、Zabbixに新しいバージョンのライブラリと他のアプリケーションに古いバージョンが必要な場合で起きます。
したがって、非標準の場所でコンポーネントを指定すると、同じコンポーネントが標準の場所に存在する場合、常に機能するとは限りません。
たとえば、libcurlパッケージがまだインストールされている状態で/usr/local
に新しくインストールされたlibcurlを使用する場合、zabbixは間違ったものをピックアップしてコンパイルが失敗する可能性があります。
usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status
ここで、関数curl_easy_header()
は古い/usr/lib/x86_64-linux-gnu/libcurl.so
では利用できませんが、新しい/usr/local/lib/libcurl.so
では利用可能です。
問題はリンカーフラグの順序にあり、1つの解決策は、LDFLAGS変数のライブラリへのフルパスを指定することです。
$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
一部のシステムでは-Wl,--no-as-needed
オプションが必要かもしれないことに注意してください(参照: debianベースシステムのデフォルトリンクオプション)。