共有ライブラリ
/usr/libとかに入ってるやつ
libcやlibsslなど
実行時に解決される依存
カーネルのローダーが実行可能ファイルをメモリにロード
動的リンカが実行可能ファイルが要求するライブラリをメモリにロード
代表的な動的リンカ
ld
mold
/usr/libなどからライブラリを探す
rpathで実行可能ファイルにハードコード
LD_LIBARY_PATH環境変数で指定
ライブラリが見つからない場合実行できない
lddで必要なライブラリを確認できる
利点
実行可能ファイルのサイズが減る
libcはほとんどのプログラムが利用する
厄介な問題を引き起こしがち
共有ライブラリのバージョン衝突
アップグレードの危険性
利用している全ての実行可能ファイルに伝播
解決策
静的リンクの利用
コンパイルの設定を変える