2010年1月20日水曜日

Zabbix 1.8のWindowsエージェントのコンパイルの問題

Zabbix 1.8のWindowsエージェントをコンパイルしようとしたところ、いろいろと壁にぶつかりました。

Zabbix 1.8のリリースファイルにeventlog.c/hが含まれていない

Zabbix SIAのリリースファイル(zabbix-1.8.tar.gz)のsrc/zabbix_agentディレクトリにはeventlog.c/hが含まれていないために以下のようなエラーが出てコンパイルが通りません。

Subversionの方には含まれているので、何らかの理由でリリース用のtar.gzファイルを作成するときに削除されてしまったようです。(なぜそんなことになってしまったのかは不明ですが)

active.c(28) : fatal error C1083: include ファイルを開けません。'eventlog.h': No such file or directory

Subversionからeventlog.c/hをダウンロードしてディレクトリに配置してコンパイルを行うと、とりあえず上記エラーは出なくなります。

afxres.hのincludeエラー

上記対応をしても今度は以下のエラーが出るようになります。

fatal error C1083: include ファイルを開けません。'afxres.h': No such file or directory

ネットを検索するとVS2008 Express Editionを使っている場合はeventlog.cを以下のように書き換えればいいよ、ということのようだけど、修正点が理解できていないのでこれが正しいのかどうかは分からないです。

75  //#include "afxres.h"  ← コメントアウト
76 #include   ← 追加

77 #defind IDC_STATIC -1  ;← 追加

ひとまず上記でコンパイルは通りました。あとでVS2008のGUI画面の方からコンパイルしたところafxres.hエラーは出なかったので、コマンドラインからコンパイルしたときにライブラリのパスが通っていなかっただけかもしれません。

zbx_read関数のリンクエラー

最終的にはこのエラーにたどり着きました。

logfiles.obj : error LNK2019: 未解決の外部シンボル _zbx_read が関数 _process_logrt で参照されました。
file.obj : error LNK2001: 外部シンボル "_zbx_read" は未解決です。
../../../bin/win32/zabbix_agentd.exe : fatal error LNK1120: 外部参照 1 が未解決です。

ただいま原因を調査中です...

0 件のコメント: