Loose-Info.com
Last Update 2020/11/02
TOP - 各種テスト - gcc - -wrapperオプション

-wrapperオプション
コンパイル中の全てのサブコマンド(cc1、as、...)の呼び出しにラッパープログラムを使用

テスト概要

ラッパープログラムを指定してコンパイルを実行

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


コード例・出力内容中の表記

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。

使用ファイル


sample_wrapper.c(実行ファイルをsample_wrapperとしてコンパイル)
/* -wrapperオプション動作確認用ソースファイル sample_wrapper.c */ #include <stdio.h> #include <stdlib.h> int main(int argc, const char *argv[]) { printf("****************************************************************\n"); int i; for (i=0; i<argc; i++) { printf("[%02d] %s\n", i, argv[i]); } printf("****************************************************************\n"); return 0; }

動作テスト


ラッパープログラムを指定してコンパイルを実行
$ gcc -v sample.c -wrapper ./sample_wrapper,arg1,arg2 <--- ラッパープログラムと引数をコンマ区切りで記述 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/usr --enable-languages=c,c++ --disable-multilib ... Thread model: posix gcc version 8.2.0 (GCC) COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64' ./sample_wrapper arg1 arg2 /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 -quiet -v sample.c ... -o /tmp/ccqmRxY4.s ラッパープログラムとその指定引数以降にcc1とその引数がコマンドラインに並ぶ **************************************************************** [00] ./sample_wrapper <--- 呼び出されたラッパープログラム [01] arg1 [02] arg2 <--- ここまでが-wrapperオプションで指定した引数 [03] /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/cc1 <--- ここ以降、コンパイラ(cc1)のコマンドライン [04] -quiet [05] -v [06] sample.c [07] -quiet [08] -dumpbase [09] sample.c [10] -mtune=generic [11] -march=x86-64 [12] -auxbase [13] sample [14] -version [15] -o [16] /tmp/ccqmRxY4.s **************************************************************** COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64' ./sample_wrapper arg1 arg2 as -v --64 -o /tmp/ccxISLAK.o /tmp/ccqmRxY4.s ラッパープログラムとアセンブラ(as)のコマンドライン **************************************************************** [00] ./sample_wrapper [01] arg1 [02] arg2 [03] as [04] -v [05] --64 [06] -o [07] /tmp/ccxISLAK.o [08] /tmp/ccqmRxY4.s **************************************************************** COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/:/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/:... LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/:... COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64' ./sample_wrapper arg1 arg2 /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 -plugin ... ラッパープログラムとリンカ(collect2)のコマンドライン **************************************************************** [00] ./sample_wrapper [01] arg1 [02] arg2 [03] /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/collect2 [04] -plugin [05] /usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/liblto_plugin.so [06] -plugin-opt=/usr/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/lto-wrapper [07] -plugin-opt=-fresolution=/tmp/ccYYF3cq.res [08] -plugin-opt=-pass-through=-lgcc [09] -plugin-opt=-pass-through=-lgcc_s [10] -plugin-opt=-pass-through=-lc [11] -plugin-opt=-pass-through=-lgcc [12] -plugin-opt=-pass-through=-lgcc_s [13] --eh-frame-hdr [14] -m [15] elf_x86_64 [16] -dynamic-linker [17] /lib64/ld-linux-x86-64.so.2 [18] /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crt1.o [19] /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crti.o [20] /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/crtbegin.o [21] -L/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0 [22] -L/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib [23] -L/lib/../lib [24] -L/usr/lib/../lib [25] -L/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../.. [26] /tmp/ccxISLAK.o [27] -lgcc [28] --as-needed [29] -lgcc_s [30] --no-as-needed [31] -lc [32] -lgcc [33] --as-needed [34] -lgcc_s [35] --no-as-needed [36] /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/crtend.o [37] /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/../../../../lib/crtn.o **************************************************************** COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=x86-64' $