2
是否可以在gcc/g ++/clang/clang ++的一次命令中同時生成目標文件和源文件?怎麼樣?用gcc/clang生成程序集和目標文件:可能嗎?怎麼樣?
我需要通過很多其他的選擇,所以我想,以避免重複他們在2個獨立的命令:
gcc -S test.cC# produce assembly
gcc -c test.cC# produce object file
是否可以在gcc/g ++/clang/clang ++的一次命令中同時生成目標文件和源文件?怎麼樣?用gcc/clang生成程序集和目標文件:可能嗎?怎麼樣?
我需要通過很多其他的選擇,所以我想,以避免重複他們在2個獨立的命令:
gcc -S test.cC# produce assembly
gcc -c test.cC# produce object file
,您可以給-save-temps
選項GCC:它會留下所有的臨時文件(包括.s
文件)在當前目錄(與clang
作品也):
gcc -c --save-temps test.cc
或使用-Wa,-aln=test.s
選項:
gcc -c -Wa,-aln=test.s test.c
從gcc
文檔:
-Wa,option
通
option
作爲一個選項,以彙編。如果選項包含逗號,則在逗號處將其分割爲多個選項。
從as
文檔:
-a[cdghlmns]
打開列表,在任何不同的方式:
-al
包括裝配- 省略形式處理
[...]
您可以合併這些選項;例如,使用
-aln
進行彙編列表,而不進行表單處理。
鐺具有應當被關閉的綜合彙編(How to switch off LLVM's integrated assembler?):
clang++ -c -no-integrated-as -Wa,-aln=test.s test.c
看來,'鐺-c --save-臨時工test.cc'使用不同的彙編不僅僅是'鐺-S'或'clang -c'。並且該彙編程序向正在添加到clang的功能發出錯誤消息...「clang -S」和「clang -c」都不會產生該錯誤。所以我不知道我的修改是錯誤的還是需要對環境做一些調整。我在Windows上,交叉編譯到ARM-Linux。 –