2013-08-29 70 views
1

我有一個binary1這是編譯時間鏈接到另一個library1.so 要添加一些功能我已經創建library2.so這libas_sdk.so使用。鏈接庫是編譯時間鏈接到另一個庫

功能在library2.so如果dlopen正常運行只(libas_sdk.so)是成功的,否則它通常會返回並做其他工作。

現在library1.so有需要時使用library2.so並使用新的功能。

我已經試過多次編譯和鏈接選項,但得到LDD或懸而未決的符號錯誤。

請建議。

+2

當你得到它時,請給出錯誤消息。這將有助於其他人幫助您確定問題。 – ZijingWu

+0

「編譯時間鏈接」 - 我認爲鏈接時鏈接。 ;)另外,措辭有點混亂,至少對我來說。 – thokra

+2

明確您所嘗試的「多個編譯和鏈接選項」。我知道這些事情可能令人沮喪,但這篇文章讀起來有點像你放棄了,現在只是想抱怨。 – delicateLatticeworkFever

回答

0

的dlopen()將返回成功,如果庫在已鏈接。

因爲library1.so必須使用library2.so,你需要兩個人都要binary1鏈接。 (-llibrary1 -llibrary2)

從你的問題看來,libas_sdk.so運行時library2.so鏈接。它可能發生在你調用其某些init_library2()或某些配置數據的函數時。

我覺得這個問題是不是與你的鏈接,但你binary1。庫2(或庫1)的初始化是你做得太早或太遲的原因。恕我直言,你的binary1應該與一個簡單的-llibrary1 -llibrary2鏈接。