リンカーとライブラリ

コマンド行上のアーカイブの位置

コマンド行上のアーカイブの位置は、作成される出力ファイルに影響を及ぼします。リンカーがアーカイブを検索する唯一の目的は、以前に参照したことのある定義されていない仮の外部リファレンスを解析することです。この検索が完了し、必要な再配置可能オブジェクトが抽出されると、このアーカイブは、コマンド行上のアーカイブに続く入力ファイルから入手した新しいシンボルの解析には使用できません。たとえば、次のコマンドでは、file1.c から入手したことのあるシンボルリファレンスを解析するためだけに、libfoo.a を検索するように、リンカーに指示しています。


$ cc -o prog file1.c -Bstatic -lfoo file2.c file3.c -Bdynamic 

libfoo.a は、file2.c または file3.c のシンボルリファレンスを解析するためには、使用できません。


注 -

原則として、コマンド行の最後にアーカイブを指定するのが最善の方法です。ただし、最後にアーカイブを配置するには、複数の定義を重複させる必要がある場合は除きます。