How to force gcc to link an unused static library
Use --whole-archive
linker option.
Libraries that come after it in the command line will not have unreferenced symbols discarded. You can resume normal linking behaviour by adding --no-whole-archive
after these libraries.
In your example, the command will be:
g++ -o program main.o -Wl,--whole-archive /path/to/libmylib.a
In general, it will be:
g++ -o program main.o \ -Wl,--whole-archive -lmylib \ -Wl,--no-whole-archive -llib1 -llib2