[ubuntu] 動的ライブラリの読み込み優先順位

1. 搬入経路

  • デフォルトのライブラリ読み込みパス (/lib や /usr/lib など)
  • ldconfig はロード パスを指定します。構成ファイル /etc/ld.so.conf で動的ライブラリ検索パスを指定します。
  • 指定されたロード パスをコンパイルする: ターゲット コードをコンパイルするときに、gcc パラメーター "-Wl,-rpath" を通じてプログラムの動的ライブラリ検索パスを指定します。
  • 環境変数はロード パスを指定します。環境変数 LD_LIBRARY_PATH を通じて動的ライブラリ検索パスを指定します。

2. ロード順序

動的ライブラリのロード検索優先順位 (高から低):

  • 指定されたロードパスをコンパイルします
  • 環境変数はロードパス(LD_LIBRARY_PATH)を指定します。
  • ldconfig はロードパスを指定します
  • デフォルトのライブラリロードパス

例証します:

「/usr/local/lib」と「/usr/local/lib/x86_64-linux-gnu、/lib/x86_64-linux-gnu、および /usr/lib/x86_64-linux-gnu はすべて ldconfig で指定されたロード パスです。場所はそれぞれ /etc/ld.so.conf.d/libc.conf および /etc/ld.so.conf.d/x86_64-linux-gnu.conf にあります。

/etc/ld.so.conf ファイルの内容を確認します。/etc/ld.so.conf.d/*.conf が含まれているため、実際には /etc/ld.so.conf 内の各設定ファイルです。 .dディレクトリ、私の環境は次のとおりです。

libc.conf
libnginx.conf
x86_64-linux-gnu.conf

上記の環境によると、より詳細なライブラリ パスの優先順位は次のとおりです。

  • 指定されたロードパスをコンパイルします
  • 環境変数はロードパス(LD_LIBRARY_PATH)を指定します。
  • ldconfig はロード パス /usr/local/lib を指定します。
  • ldconfig は、読み込みパス (libnginx.conf の内容) を指定します。
  • ldconfig はロード パスを指定します: /usr/local/lib/x86_64-linux-gnu、/lib/x86_64-linux-gnu、および /usr/lib/x86_64-linux-gnu
  • デフォルトのライブラリ読み込みパス: /lib および /usr/lib

おすすめ

転載: blog.csdn.net/weixin_35804181/article/details/131652982