如果我的術語不正確,我會提前道歉。如果應用程序鏈接到共享庫,那麼爲什麼編譯時需要該庫?
比方說,我有一個名爲libVectorMath.so
的共享庫。它有兩個有趣的功能,addVector()
和subtractVector()
。這兩個功能在vectorMath.h
原型。我還有一個名爲testVectorMath
的可執行文件,它使用這兩個函數,並動態鏈接到libVectorMath.so
。
一般來說,要構建testVectorMath
,我還需要構建libVectorMath.so
。爲什麼是這樣?頭文件vectorMath.h
不足以告知testVectorMath
它應該期望在libVectorMath.so
中找到哪些符號?
換句話說,不能testVectorMath
有它的一些指令說「尋找一個庫調用libVectorMath.so
然後查找名爲內它addVector()
和subtractVector()
符號」?
看看這裏的熱門答案http://stackoverflow.com/questions/3159395/why-symbols-of-a-shared-library-are-not-resolved-at-link-time –
你怎麼樣告訴你的可執行文件* where *以查找在vectorMath.h中聲明的函數? –