Pet*_*der 12
代替:
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只解析一次).但是,如果你将太多文件放在一个统一中,那么你会发现你需要重建比你想要的更多的资源,所以你需要尝试取得平衡.
您可以使用ld -r组合对象,同时保留重定位信息并使构造函数保持未解析状态:
ld -r -o everything.o object1.o object2.o ...
Run Code Online (Sandbox Code Playgroud)