我將我項目中的一些代碼拆分爲一個單獨的庫,以便在其他應用程序中重用。這個新的庫有不同的功能定義但不是實施,我目前的項目和其他應用程序將實現他們自己的版本的這些功能。如何強制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