如何使用多个源文件使用gcc创建单个目标文件

Dav*_*vid 11 c++ gcc g++ object

我正在使用带有g ++ 的-c选项来创建一堆目标文件,并且它只允许我为每个目标文件指定一个源文件.我想让其中一些文件进入其中.有没有办法做到这一点?

Pet*_*der 12

其他人提到了存档,但另一个选择是Unity构建.

代替:

g++ -c file1.cpp file2.cpp
Run Code Online (Sandbox Code Playgroud)

创建一个单独的"统一文件"

// This is the entire file (unity.cpp)
#include "file1.cpp"
#include "file2.cpp"
// more if you want...
Run Code Online (Sandbox Code Playgroud)

然后

g++ -c unity.cpp
Run Code Online (Sandbox Code Playgroud)

这也有更快的编译的优势,在许多情况下,连接(因为两者使用的标题file1.cpp,并file2.cpp只解析一次).但是,如果你将太多文件放在一个统一中,那么你会发现你需要重建比你想要的更多的资源,所以你需要尝试取得平衡.


Sim*_*ter 6

您可以使用ld -r组合对象,同时保留重定位信息并使构造函数保持未解析状态:

ld -r -o everything.o object1.o object2.o ...
Run Code Online (Sandbox Code Playgroud)