我有一個靜態鏈接到libssl.a &另一個靜態鏈接libssl.a的共享對象B.so的共享對象A.so。靜態庫加載兩次
A.so & B.so在GLOBAL範圍內具有來自libssl.a的符號。我通過readelf -s A.so檢查了這個。我有一個可執行文件a.out,它加載A.so和B.so.當a.out終止時,我在A.so.的libssl.a中的一個符號中得到一個 雙免費錯誤。
即使libssl.a靜態鏈接到每個共享對象,因爲它們在全局範圍內公開顯示爲 有可能共享相同的符號而不是選擇它的本地副本。
這是什麼解決方法?如何使符號在本地?
請幫忙
我會推薦使用調試器來確認你的理論。 – jdigital
能否詳細說明一下? – KodeWarrior
只是一件小事,因爲我不知道如何將它應用到你的情況:'dlopen'有一個RTLD_LOCAL標誌,在某些情況下,這種標誌可以幫助確切地處理這種情況。所以如果你用'dlopen'打開這些庫,他們可能不應該干涉。 – liori