AIX のリンカーと動的ローダの癖2013年09月06日 12時27分41秒

AIX のリンカーと動的ローダは、機能的には Solaris のより上だと思うが、その分だけ癖があり、若干厄介な面もある。

具体的な利点としては、ライブラリをリンクする時の Solaris のリンクの単位がファイル毎名のに対し、AIX ではシンボル単位なのだ。Solaris は呼ばれない関数が一つのファイルにあったら、否応なしに全てが取り込まれる。AIX では必要な関数だけだ。

AIX では呼ばない関数をリンクしないので Solaris に比べて実行ファイルが大きくなりにくい。動的ライブラリも併せて行なったときに、その呼ばない関数の切り落としをやりすぎてしまうみたいだ。

AIX では実行ファイルをロードしている時に全てのシンボルを読み込もうとする。もし、プログラムの中に呼ばれないが、外部参照されている関数などがあると、実行できなくなる。リンクは出来るのに起動できないのだ。

リンク時に -blazy を渡すとこれらのシンボルも探すようになる。