共有ライブラリ検索の設定
共有ライブラリの取り扱いは Linux カーネル側の標準システムになっている。
このため、ディストリビューションに関係なく同じ仕組み。
ld.so、ld-linux.so が担当している。
table:type
ld.so a.out フォーマット
ld-linux.so ELF
以下のコマンドでマニュアルを見る事ができる。
$ man ld.so
DT_RPATH 動的セクションに書かれたパス(DT_RUNPATH が存在しない場合)
LD_LIBRARY_PATH 環境変数に書かれたパス
DT_RUNPATH 動的セクションに書かれたパス
/etc/ld.so.cache
/lib (64bitの場合は /lib64 の場合あり)
/usr/lib (64bitの場合は /usr/lib64 の場合あり)
ユーザーローカルで設定する場合
.bash_profile に以下を追加
code:.bash_profile.fragment(sh)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
システムグローバルに設定する場合
$ echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/usr-local-lib.conf
参考
Linux標準リンカにおける共有ライブラリの検索順序 https://suzuki-kengo.net/ld-linux-so-library/
Linux: ライブラリの動的リンクでエラーが出た場合の対処方法 https://leico.github.io/TechnicalNote/Linux/ld-library-path