Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
pkg-configとは - わかりやすく解説 Weblio辞書
[go: Go Back, main page]

pkg-configとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > pkg-configの意味・解説 

pkg-config

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/05/31 21:57 UTC 版)

pkg-config
開発元 Tollef Fog Heen / freedesktop.org
最新版 0.29.2 / 2017年3月20日(2か月前) (2017-03-20
リポジトリ anongit.freedesktop.org/pkg-config
対応OS Unix-like
ライセンス GNU GPL
公式サイト http://pkg-config.freedesktop.org/
テンプレートを表示

pkg-configとは、ライブラリを利用する際に必要となる各種フラグやパス等を、共通したインターフェースで提供でするための手段である。

概要

pkg-configは、環境変数PKG_CONFIG_PATHのパスに存在する *.pc ファイルに記録された情報を元に、ビルドの際に必要な文字列を返す。

例えば、libaaa.soを /usr/local/lib/aaa/ 以下に保存し、ヘッダファイルを /usr/local/include/aaa/ 以下にインストールした場合。 libaaa.so を利用したソースをコンパイルする際に、コンパイラへlibとincludeのパス等を指定する必要があるが、そのパスが環境ごとに異なる場合を考えると必ずしも gcc -I/usr/local/lib/include -o a.c -L/usr/local/lib/aaa -laaa が成立するとは限らない。

もしもlibaaa が aaa.pc を提供していれば、

pkg-config aaa --cflags

で文字列 -I /usr/local/lib/aaa を得られ、

pkg-config aaa --libs

で文字列 -L /usr/local/lib/aaa -laaa を得られるかもしれない。

もしもlibaaaがpkg-configに対応していれば(インストール時に適切な aaa.pc が作成されるライブラリーであれば)、そのlibaaa利用の際には pkg-config を用いることができるので、記述に統一性を持たせられる。

gcc `pkg-config aaa --cflags --libs` a.c

*.pcは普通は/usr/lib/pkgconfig/以下に作成され、pkg-config が読みにいくデフォルトのパスもここだが、/usr/share/pkgconfigの場合もあるかもしれない。 --prefix=/usr/localとしてライブラリーをビルドした場合は /usr/local/lib/pkgconfig かもしれない。

*.pcのパスを独自に指定したい場合は環境変数PKG_CONFIG_PATHに指定する。export PKG_CONFIG_PATH=/usr/lib/aaa/pkgconfig など。


*.pcの記述方法は、単純にフラグに応じて出力する文字列が列挙されているだけである。 たとえばglibの.pcファイルである glib-2.0.pc の場合は、

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: GLib
Description: C Utility Library
Version: 2.30.2
Libs: -L${libdir} -lglib-2.0 
Libs.private:  -lrt
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include 

もしも pkg-config を使わずに、直接コンパイルフラグを指定するとしたら glib_test.c

#include <glib.h>
main() {
        g_printf("hello");
}
gcc -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -L/us/glib-2.0 -lglib-2.0 glib_test.c 

と、glibを利用するためのパスやフラグの記述が煩わしい。しかもこのパスはユーザーごとに異なる可能性もあるので、glib利用者がMakefile等に決め打ちしてもうまくいかない場合も考えられる。

一方、pkg-config を使えば

gcc $(pkg-config --cflags --libs glib-2.0) glib_test.c

と、シンプルかつ抽象的に記述できる。

外部リンク




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「pkg-config」の関連用語

pkg-configのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



pkg-configのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのpkg-config (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS