我将我项目中的一些代码拆分为一个单独的库,以便在其他应用程序中重用。这个新的库有不同的功能定义但不是实施,我目前的项目和其他应用程序将实现他们自己的版本的这些功能。如何强制GCC编译未使用的函数?
我在我的原始项目中实现了这些功能,但是它们并没有在其中的任何地方被调用。他们只被这个新的图书馆调用。结果,编译器优化了它们,并且我发现链接失败。当我向这些函数添加虚拟调用时,链接失败消失。
有什么办法可以告诉GCC编译这些函数,即使它们没有被调用?
我在SuSE linux(x86-64_linux_2.6.5_ImageSLES9SP3-3)上用gcc 4.2.2编译使用-O2
。
您是否尝试过使用-O0? – 2010-11-15 07:45:20
@jcomeau:但是如果你想让它们优化呢? – Cascabel 2010-11-15 07:49:34
如果它没有优化工作,那么要做的事情是找出哪些特定的优化关闭;可能-fno-inline-small-functions会是一个,但我从来没有深入探讨过gcc如何做它的魔法 – 2010-11-15 07:54:09