平成22年5月11日火曜日

Linuxでpkgconfigの使い、設定方法

今回syslog-ngを自分でインストールする時、以下のエラーが出ました。
checking for GLIB - version >= 2.10.1... no
*** Could not run GLIB test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GLIB is incorrectly installed.
configure: error: Cannot find GLIB version >= 2.10.1: is pkg-config in path?


自分の環境確認した上で、GLibのバージョンが旧いのを判断しました
rpm -qa | grep glib
glib-1.2.10-20.el5


最初yumで自動更新してもらいたいけど、なんとyumのサイトにglib-1.2.10が最新バージョンです。。。。ショック!!

今回syslog-ngは2.10.1のglibが必要ので、glibから自分インストールするしかないです。

glibのインストールコマンド
cd /usr/local/src/
wget http://ftp.gnome.org/pub/gnome/sources/glib/2.22/glib-2.22.5.tar.gz
tar zxvf glib-2.22.5.tar.gz
cd glib-2.22.5
./configure && make && make install


インストールは簡単ですけど、単純にインストールしても、syslog-ngインストール時、
この新しいインストールしたglibは見つからないため、また失敗しました。

このとき、エラーメッセージ中のpkg-config in pathという文字列が目に入りました。
多分pkg-configに新しいglibのpathを設定すれば、問題解決するかもしれないので、ネットで
pkg-configの使い方を調査しました。

pkg-configはプログラムをコンパイル時、必要のlibの存在パスを表示するという役があります。

たとえば、下記のコマンドを実行した結果を見てみます。
pkg-config --libs libpng12
-lpng12


結果の-lpng12はgccコンパイル時使うパラメートと思います。

今回使うのglib-2.0を探してみましょう
pkg-config --libs glib-2.0
--libs glib-2.0: unknown option

エラー出しました。

実今回のglibのインストール後、/usr/local/libのしたにpkgconfigというフォルダーが出てきました。
このフォルダー中にglibのpkgconfig情報全部入ってますので、pkg-configコマンドを/usr/local/lib/pkgconfigの内容を読み込めば、問題解決すると思います。

対応方法は実に二つがあります
pkg-configコマンドはPKG_CONFIG_PATH環境変数中のConfigファイルを読み込みますので、
以下のようなコマンドを実行すれば、glibが見つかれます
env PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/ pkg-config --libs glib-2.0
-L/usr/local/lib -lglib-2.0


もうしくは/usr/lib/pkgconfigというフォルダーがあって、pkg-configのデフォルトConfigフォルダーです。ここにglibのpkgconfigをコビーすれば、環境変数設定しなくても、glibが見つかります。
cp -a /usr/local/lib/pkgconfig/* /usr/lib/pkgconfig/
pkg-config --libs glib-2.0
-L/usr/local/lib -lglib-2.0


以上

0 件のコメント: