2014-11-06 113 views
3

原來的問題:動態/共享庫無法動態

我目前有a.so加載兩個共享庫和動態b.so的程序。這兩個庫加載libcrypto.so(OpenSSL)。如果程序結束,則有一個double free or corrupted error。我已經檢查過我的程序是否有錯誤。索引處於界限內,並且不使用動態內存。

對我來說,似乎libcrypto.so庫在程序結束時被分離兩次。有沒有辦法來防止這種情況?優選地,不必使用不同的libssl實例,因爲存儲和內存在接近的範圍內。

即時通訊使用Ubuntu 14.04 LTS,在C語言中編寫庫,並使用gcc和-fpic編譯它們。

感謝您的幫助!

PS:可能是相關的:Static library loaded twice

//編輯:出現同樣的問題,如果a.so和b.so靜態鏈接的libssl。

///編輯:如果a.so靜態鏈接和b.so鏈接動態,則會發生同樣的問題。 (首先使用a.so.)如果a.so是動態鏈接的,而b.so是靜態鏈接,則在RSA_check_key(..)上發生libcrypto錯誤。

回答

////編輯:我儘量減少我的代碼越來越發現我是另外的東西聯繫起來靜態的兩倍。這引起了第一個問題

新的問題:

如第二編輯提到的,如果libcrypto是靜態第一個鏈接,然後動態的RSA_check_key失敗。任何想法發生在這裏?

回答