リンクの順序

XL C/C++ は、次の順序でライブラリーをリンクします。

  1. ユーザー .o ファイルおよびライブラリー
  2. XL C/C++ ライブラリー
  3. C++ 標準ライブラリー
  4. C 標準ライブラリー

次の表は、"Hello World" 型プログラムのリンク順序をより詳細に示しています。

示されているディレクトリー・パスは、特定のコンパイラー構成によっては 異なる場合があります。ユーザーの特定のコンパイラー構成に固有の情報については、 システムにインストールされているデフォルトの構成ファイルを参照してください。 一般的なコンパイラーのデフォルト構成ファイルについては、構成ファイルでのコンパイラー・オプションの指定を参照してください。

ld コマンド・コンポーネント オプション ld 引数 xldriver 属性

ld

gcc, g++ ld ld / ld_64
xlc、xlC ld
例外処理パーソナリティー・ハンドラーを使用可能にする all --eh-frame-hdr xldriver によってコマンド行に追加されるオプション
.ident ディレクティブを生成する -Qn
これ以外の場合 -Qy xldriver によってコマンド行に追加されるオプション
出力の種類 -shared -static -shared xldriver によってコマンド行に追加されるオプション
-shared -shared
-static -static
これ以外の場合
arch 32 ビット -melf32ppclinux xldriver によってコマンド行に追加されるオプション
64 ビット -mel64ppc
動的ローダー 32 ビット !-shared !-static -dynamic-linker /lib/ld.so.1 dynlib
64 ビット !-shared !-static -dynamic-linker /lib64/ld64.so.1 dynlib64
call to main( ) 32 ビット !-shared /usr/libcrt1.o crt
64 ビット !-shared /usr/lib64/crt1.o crt_64
32 ビット !-shared -p /usr/lib/gcrt1.o mcrt
32 ビット !-shared -pg gcrt
64 ビット !-shared -p /usr/lib64/gcrt1.o mcrt_64
64 ビット !-shared -pg gcrt_64
init/fini 関数 prolog 32 ビットすべて /usr/lib/crti.o crtp
64 ビットすべて /usr/lib64/crti.o crtp_64
init/fini レジスター -shared -static crtbeginT.o crtbegin_t / crtbegin_t_64
-static
-shared crtbeginS.o crtbegin_s / crtbegin_s_64
これ以外の場合 crtbegin.o crtbegin / crtbegin_64
ライブラリー検索パス 32 ビット gcc -L<gcc>/gcc-lib gcc_libdirs
64 ビット gcc -L<gcc64>/gcc-lib gcc_libdirs_64
32 ビット g++ -L<gcc>/gcc-lib/powerpc-suse-linux-gnu/3.2
-L<gcc>/gcc-lib
gcc_libdirs
64 ビット g++ -Lgcc64/gcc-lib/powerpc64-linux-gnu/3.2
-Lgcc64/gcc-lib
gcc_libdirs_64
ユーザー .o ファイルおよびライブラリー all
vacpp ライブラリー all libraries2 / libraries2_64
C++ 標準ライブラリー g++ -lstdc++ -lm gcc_cpp_libs / gcc_cpp_libs_64
C 標準ライブラリー gcc
-static
-static -shared-libgcc
-shared -static-libgcc
-lgcc
-lgcc_eh
-lc
-lgcc
-lgcc_eh
gcc_static_libs / gcc_static_libs_64
g++
-shared-libgcc
-lgcc_s
-lgcc
-lc
-lgcc_s
-lgcc
gcc_shared_libs / gcc_shared_libs_64
all gcc_libs / gcc_libs_64
保管/復元ルーチン all crtsavres.o crtsavres / crtsavres_64
init/fini run crtend.o crtend / crtend_64
-shared crtendS.o crtend_s / crtend_s_64
init/fini 関数 epilog all /usr/lib/crtn.o crte
/usr/lib64/crtn.o crte_64