Skip to content

Linuxではld-linux.soを通してプログラムを実行する

ld-linux.so は動的リンカー/ローダー(以下ローダ)と呼ばれるプログラム。Arch Linuxでは /lib/ld-linux-x86-64.so.2 にローダーがある。設定は /etc/ld.so.conf にある。

exec(2) したとき、ローダは動的リンクされた共有ライブラリを解決して実行可能にしたうえでプログラムを起動する。ELFバイナリの場合は .interp セクションにローダが記述されているのでカーネルによってこれが実行される。

今となってはほとんど全てのLinuxバイナリがELFだけど、 a.out 形式の場合は ld.so が使われるらしい。

主な環境変数は LD_LIBRARY_PATHLD_PRELOAD などがある。特に後者を使うと任意のコードを差し込めるのでデバッグやテストに有用かもしれない。