禁止链接器在生成目标程序时自动去除静态链接库中未调用函数和变量

为了减少目标文件的尺寸,编译过程中gcc会移除掉static和inline的函数,链接过程中ld负责移除其它在最终代码中调用的函数。

实际上可能某函数在最终可执行程序中未被调用,但是某个dlopen的.so正好需要,就需要保留这个函数,使用-Wl,--whole-archive和 -Wl,--no-whole-archive 两个链接选项就能保证未调用函数不被优化掉。

参考:

http://www.gamedev.net/topic/126037-will-gcc-include-my-unused-functions-in-the-exectuable/

http://blog.csdn.net/njuitjf/article/details/9293817

你可能感兴趣的:(禁止链接器在生成目标程序时自动去除静态链接库中未调用函数和变量)