c++ - 使用 g++ 将多个源文件编译成一个 .o

标签 c++ g++

<分区>

我希望将多个.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 和 -L,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

最佳答案

您不能将多个源文件编译成一个目标文件。每个源文件都必须编译成它自己的目标文件。

您必须为每个源文件单独执行此操作:

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

关于c++ - 使用 g++ 将多个源文件编译成一个 .o,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15386629/

相关文章:

c++ - C++函数返回错误的数据类型

char* str ="..."与 char str[] ="..."奇怪的行为

c++ - 基于 GLEW 的程序无法编译

c++ - glOrtho 不工作

c++ - 嵌套模板类: Parameter default value not accepted

c++ - 一个简单的 C++ 程序的汇编输出

在线程中运行的 C++ UDP 服务器 io_context 在工作开始之前退出

c++ - Win32 API 会对我的计算机造成危险吗?

c++ - 有条件地继承自纯基类

c++ - 如果我有一个固定大小的填充 ascii 数字的字符数组,我知道它指的是一个无符号整数,那么将它转换成这样的最快方法是什么?