pkg-config
私はC ++コンパイル中に正しいライブラリを提供するためにそれを使用します。私が理解したのは、includeディレクティブを指して、次のライブラリの場所を参照し/etc/ld.so.conf
ました。ld.so.conf
/etc/ld.so.conf.d/*.conf
/usr/local/lib
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
問題は、私が必要とするライブラリが/usr/lib
基本的に下にあることです。
このパスを/etc/ld.so.conf
自分のパスに追加したり、ライブラリを移動したりできますか?または推奨される方法は何ですか?
答え1
明確にするために:このファイルは、動的/etc/ld.so.conf
(ランタイム)リンカ/ローダ(Linux)で使用され、実行にロードされているバイナリのシンボルを確認します(ここには共有ライブラリも含まれています)。これは、複数のオブジェクト/アーカイブをまとめて組み立て、その依存関係を解決するために使用されるld-linux.so
リンカーとは対照的です。ld
動的リンカーは、/etc/ld.so.conf
バイナリをロードするときに共有ライブラリを見つける必要があるディレクトリのリストを確認します。上記のパスに加えて、リンカはデフォルトパスも検索します(Linuxでは/lib
通常64ビットローダに/usr/lib
変更されます)。lib64
〜しない限りこのバイナリは、この機能を明示的に無効にするフラグ(-x nodefaultlib
binutils ' ld
)に関連付けられていますld.so.conf
。
答え2
pkg-configはld.so.confをまったく使用せず、通常は設定ファイルをに保存します/usr/lib/pkgconfig/
(必要に応じてPKG_CONFIG変数を指定します)。
つまり/usr/lib/pkgconfig/libmtp.pc
# libmtp pkg-config source file
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: libmtp
Description: libmtp is a library for accessing Media Transfer Protocol devices
Version: 1.1.5
Requires: libusb-1.0
Conflicts:
Libs: -L${libdir} -lmtp
Libs.private: -lgcrypt
Cflags: -I${includedir}
そこからcflags、libsなどを見つけることができ、これがpkg-configを必要とするコマンドパラメータを提供する方法です。
したがって、独自のライブラリ用に次のファイルを作成します(ここから文書を読んでください。)