Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用g++;_C++_G++ - Fatal编程技术网

C++ 使用g++;

C++ 使用g++;,c++,g++,C++,G++,我希望将许多.cc文件编译成一个.o文件 我正在使用bash脚本(我需要这样做),将我的单元测试源文件构建到一个unit_test.o文件中,但它说的是“g++:不能用-c指定-o,也不能用多个文件指定-s” 我将在脚本的下一阶段链接这些源文件 到目前为止,我有 g++ -Wno-deprecated -std=c++0x \ -o $Unit_Test_Output_Directory/unit_test.o \ -c $Unit_Test_Source_Directory/t

我希望将许多.cc文件编译成一个.o文件

我正在使用bash脚本(我需要这样做),将我的单元测试源文件构建到一个unit_test.o文件中,但它说的是“g++:不能用-c指定-o,也不能用多个文件指定-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和-L之后,bash中的“\”用于将命令拆分为多行

然后在链接阶段,我将我的unit_test.o和源文件的.o链接到一个unit_test_可执行文件中

有人能帮帮我吗?我是否需要继续为-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

不能将多个源文件编译为单个对象文件。每个源文件都必须编译为自己的目标文件

您必须为每个源文件分别执行此操作:

g++ -Wno-deprecated -std=c++0x \ -o $Unit_Test_Output_Directory/unit_test1.o \ -c $Unit_Test_Source_Directory/test1.cc g++ -Wno-deprecated -std=c++0x \ -o $Unit_Test_Output_Directory/unit_test2.o \ -c $Unit_Test_Source_Directory/test2.cc g++-Wno已弃用-std=c++0x\ -o$Unit\u Test\u Output\u目录/Unit\u test1.o\ -c$Unit\u Test\u Source\u目录/test1.cc g++-Wno已弃用-std=c++0x\ -o$Unit\u Test\u Output\u目录/Unit\u test2.o\ -c$Unit\u Test\u Source\u目录/test2.cc
基本上你不能这样做:.o文件是源文件的1-1对象文件。@乔:当然,但我怀疑lukegjpotter问错了问题。你可以将源文件压缩成一个临时文件并编译它。这会有太多的副作用,但是,不要这样做。你为什么想要它?如果您想要一个文件,请使用ar进行归档。您也可以使用--combine,但这只适用于C编译器。这是一个可怕的解决方案,但必须这样做。我有一个完整但漫长的过程来创建一个新的单元测试文件并将其放入bash脚本中。@lukegjpotter这才是真正的目的。这是一个让可爱的单元测试与Maven和Jenkins一起工作的弗兰肯斯坦怪兽过程。希望现在完成。