我希望將許多.cc文件編譯爲一個.o文件。我正在使用一個bash腳本,我需要做的是將我的單元測試源文件構建到一個unit_test.o文件中,但它說「g ++:不能用-c或-S指定-o文件「 我將這些源文件鏈接到腳本的下一個階段。使用g ++將多個源文件編譯爲一個.o
到目前爲止我有;
g++ -Wno-deprecated -std=c++0x \
-o $Unit_Test_Output_Directory/unit_test.o \
-c $Unit_Test_Source_Directory/test1.cc $Unit_Test_Source_Directory/test2.cc
然後,我有我的-I和-L之後,bash中的「\」用來將命令分割成多行。
然後在鏈接階段,我將我的unit_test.o和我的源文件的.o's鏈接到unit_test_executable。
有人可以幫我嗎?我是否需要繼續調用-o unit_test1.o -c test1.cc的構建函數,然後對於測試2 ...以及在鏈接階段鏈接unit_test1.o和unit_test2.o?
我也嘗試過失敗:
g++ -Wno-deprecated -std=c++0x \
-o $Unit_Test_Output_Directory/unit_test1.o \
$Unit_Test_Output_Directory/unit_test2.o \
-c $Unit_Test_Source_Directory/test1.cc \
$Unit_Test_Source_Directory/test2.cc
基本上,你不能做到這一點:.o文件是源文件1-1目標文件。 – Joe 2013-03-13 13:29:32
@Joe當然,但我懷疑lukegjpotter問的是錯誤的問題。 – Yakk 2013-03-13 13:39:45
您可以隨時將源文件連接到一個臨時文件並進行編譯。這會產生太多的副作用,不要這樣做。爲什麼你甚至想要它?如果您想要一個文件,請使用ar進行歸檔。 你也可以使用--combine,但這隻對C編譯器有效。 – Pihhan 2013-03-13 16:18:20