/etc/ld.so.confには/usr/libは含まれていません。

/etc/ld.so.confには/usr/libは含まれていません。

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 nodefaultlibbinutils ' 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を必要とするコマンドパラメータを提供する方法です。

したがって、独自のライブラリ用に次のファイルを作成します(ここから文書を読んでください。)

関連情報