[英]Undefined symbols in a shared library compiled with a static library
我在一個可執行項目中將使用它的不同庫鏈接在一起時遇到問題。
假設項目A包含一個名為foo()
的函數; 它被編譯為靜態庫。
項目B包含一個函數名為bar()
,包括來自A的報頭和編譯為一個共享庫-Wl
, --whole-archive libA.a -Wl
, --no-whole-archive flags
。
libB.so已移至/usr/lib
。
現在,項目C包含Bh
,調用bar()
,但是由於未定義對foo()
函數的引用而未進行編譯,而foo()
函數是在項目A中定義的。
nm libB.so
說:
U foo
我正在使用gcc,編程語言是C,IDE是Eclipse CDT。
有誰有解決這個問題的想法或建議嗎?
謝謝。
感謝Icarus3的貢獻,這個問題得到了解決。
ProjectA中的某些功能使用了strict關鍵字,因此使用-std = gnu99進行了編譯。 事實證明,從代碼中刪除該關鍵字,從編譯命令中刪除-std = gnu99最終解決了該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.