How to use multiple source files to create a single object file with gcc
Others have mentioned archive, but another option is Unity builds.
Instead of:
g++ -c file1.cpp file2.cpp
Create a separate "unity file"
// This is the entire file (unity.cpp)
#include "file1.cpp"
#include "file2.cpp"
// more if you want...
Then
g++ -c unity.cpp
This also has the advantage of faster compilation and linking in many cases (because headers used by both file1.cpp
and file2.cpp
are only parsed once). However, if you put too many files in a single unity however then you'll find that you need to rebuild more sources than you wanted to, so you need to try and strike a balance.
You can use ld -r
to combine the objects while keeping relocation information and leaving constructors unresolved:
ld -r -o everything.o object1.o object2.o ...