[Linux] pkg-configでパッケージ情報を取得する

2017年9月25日月曜日

linux

コンパイルオプション

[Linux] FUSEでデータ生成でFUSEアプリケーションのコンパイルをするときに以下のようなコマンドで実行した。

$ gcc -Wall zero.c $(pkg-config fuse --cflags --libs) -o zero

この場合はpkg-configでFUSEのコンパイルフラグとライブラリのパスを取得して、そのままgccに渡している。
pkg-configは開発系パッケージをインストールしたときにインストール先がどこかを表示してくれるツールなので、これを使えばコンパイラにそのままパスを渡せるというわけだ。
試しにfuseのpkg-configを実行してみると

$ pkg-config fuse --cflags --libs
-D_FILE_OFFSET_BITS=64 -I/usr/include/fuse -lfuse -pthread

FILE_OFFSET_BITS=64というdefineとpthreadを使っていることがわかる。

pkg-configはこれ以外にもさまざまなオプションを持っているけれど、ヘッダファイルのインクルード先だけが欲しい場合やパッケージのバージョンを表示させたい場合は以下のようになる。

$ pkg-config fuse --cflags-only-I
-I/usr/include/fuse
$ pkg-config fuse --modversion
2.9.3

また、--list-all オプションでインストールされている開発系パッケージの一覧を見ることもできる。