GNU/Linux >> Linux の 問題 >  >> Linux

デフォルトで gcc が ld に渡すコマンド ライン オプションを特定するにはどうすればよいですか?

オンライン愛好家向け:

echo "int main(void) {}" | gcc -o /dev/null -v -x c - &> /dev/stdout| grep collect | tr -s " " "\012"

-x c を置き換えます -x c++ で C++ フラグを取得します。

clang でも使用できますが、その場合は /usr/bin/ld を grep する必要があります


はい、gcc -v hello.o -o hello を使用できます リンクラインを取得します。私の ubuntu マシンでの例として、次のリンク行を取得します (読みやすいように複数行に編集されています):

/usr/lib/gcc/x86_64-linux-gnu/4.4.5/collect2
--build-id
--eh-frame-hdr
-m elf_x86_64
--hash-style=gnu
-dynamic-linker
/lib64/ld-linux-x86-64.so.2
-o hello
-z relro
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crti.o
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtbegin.o
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib
-L/lib/../lib
-L/usr/lib/../lib
-L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../.. -L/usr/lib/x86_64-linux-gnu
hello.o
-lgcc
--as-needed -lgcc_s --no-as-needed 
-lc
-lgcc
--as-needed -lgcc_s --no-as-needed
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtend.o
/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crtn.o

collect2 に注意してください ld の単なるエイリアスです .


Linux
  1. LinuxでBASHコマンドライン履歴をクリアする方法

  2. Linux –コマンドラインからインテルアーキテクチャーファミリーを見つける方法は?

  3. コマンドオプションを覚える方法は??

  1. コマンドラインを使用してLinuxをシャットダウンまたは再起動する方法

  2. コマンドラインを使用してLinuxを再起動する方法

  3. 最も頻繁に使用される 15 の GCC コンパイラ コマンド ライン オプション

  1. Linuxファイルコマンド:Linuxでファイルタイプを決定する方法

  2. コマンドラインを介してOpenStackでインスタンスを作成する方法

  3. コマンドライン引数のような名前のファイルを作成するには?