0
我使用下列LLVM工具將多個文件中寫入的cpp項目轉換爲「一個」單個程序集文件。GCC相當於llvm-link
clang *.cpp -S -emit-llvm
llvm-link *.s -S -o all.s
llc all.s -march=mips
有沒有辦法在GCC中做到這一點?特別是,有沒有辦法將GCC生成的程序集文件鏈接成一個程序集文件?即什麼是LLVM-LINK的等價物?
我使用下列LLVM工具將多個文件中寫入的cpp項目轉換爲「一個」單個程序集文件。GCC相當於llvm-link
clang *.cpp -S -emit-llvm
llvm-link *.s -S -o all.s
llc all.s -march=mips
有沒有辦法在GCC中做到這一點?特別是,有沒有辦法將GCC生成的程序集文件鏈接成一個程序集文件?即什麼是LLVM-LINK的等價物?
也許LTO(鏈接時間優化)是你想要的。
然後,用gcc -flto
例如編譯每個編譯單元。
gcc -flto -O -Wall -c src1.c
g++ -flto -O -Wall -c src2.cc
,還可以使用-flto
(和相同的優化)將它們連接:
g++ -flto -O src1.o src2.o -lsomething
LTO通過將在每個生成的彙編文件和對象文件,內部GCC的一些表示工作在GCC表示(如Gimple)。請參閱its documentation
您可能想要使用MELT來定製GCC(或者只是使用其探針來了解Gimple,或者試試gcc -fdump-tree-all
)。