【发布时间】:2013-03-13 13:24:47
【问题描述】:
我希望将多个 .cc 文件编译成一个 .o 文件。
我正在使用我需要做的 bash 脚本将我的单元测试源文件构建到 unit_test.o 文件中,但它说“g++:不能指定 -o 和 -c 或 -S 和多个文件" 我在脚本的下一阶段链接这些源文件。
到目前为止我有;
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's 和 -L's,bash 中的“\”用于将命令拆分为多行。
然后在链接阶段,我将我的 unit_test.o 和源文件的 .o 链接到一个 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 当然,但我怀疑 lukegjpotter 提出了错误的问题。
-
您可以随时将源文件合并为一个临时文件并进行编译。但是,它会产生太多副作用,请不要这样做。为什么你甚至想要它?如果您想要一个文件,请改用 ar 存档。您也可以使用 --combine,但这仅适用于 C 编译器。