2012-11-08 37 views
1

我有一個好奇的問題:當構建目標文件-g時,鏈接器突然抱怨從libbar丟失的符號,我的工具間接通過libfoo間接依賴。沒有-g這不會發生。使用調試符號進行編譯需要額外的庫?

這些符號似乎是從libbar的對象libfoo中的函數的默認參數。但是,這些功能並未被我的工具使用。

我想知道這種額外的依賴是如何由調試版本引起的 - 是否可以爲所有符號生成這些調試符號,而不僅僅是我使用的符號,而對於這些調試符號,還需要默認參數?

這是在Solaris上的Sun Studio 5.10。

+0

你在C中使用內聯函數嗎? – horsh

回答

1

也許你還添加了一些定義,如DEBUG或類似的東西。這些定義可能會使用其他庫中的一些額外符號(例如,不同的日誌記錄庫)。如果你舉個簡單的例子,它也可能有幫助

+0

不,代碼不使用DEBUG或其他預處理器魔法。事實上,NDEBUG甚至沒有被我們的構建系統設置爲非調試版本。 – lytenyn

相關問題