dynamic-linking

    1熱度

    1回答

    我一直在編碼一段時間,我一直認爲編譯的鏈接階段非常簡單,但最近我不得不爲應用程序添加一個插件系統,而且我碰到了不少編譯和運行時問題,由於我完全不瞭解這個問題。現在我的工作很好,在這個過程中學到了很多東西,但現在我知道我仍然有很多東西需要學習,我想更多地探討這個問題。所以我想知道是否有人在文章,博客文章或整個「代碼部分,符號,鏈接,動態/靜態庫...」業務方面有很好的指針。 我在Linux上使用gc

    36熱度

    3回答

    我有一個共享庫,我希望鏈接使用GCC的可執行文件。共享庫的非標準名稱不是libNAME.so形式,所以我不能使用通常的-l選項。 (它恰巧也是一個Python擴展,因此沒有'lib'前綴) 我能夠將路徑傳遞到庫文件直接到鏈接命令行,但這會導致庫路徑爲硬編碼到可執行文件中。 例如: g++ -o build/bin/myapp build/bin/_mylib.so 有沒有辦法鏈接到這個庫,而不

    15熱度

    2回答

    我對Linux的加載libfoo.so.1一個可執行文件(這是一個SONAME)作爲它的一個依賴(通過另一個共享庫)。它也鏈接到另一個系統庫,這反過來,鏈接到系統版本,libfoo.so.2。因此,均爲libfoo.so.1和libfoo.so.2在執行期間被加載,並且應該從版本爲1的庫調用函數的代碼最終會從具有版本2的較新系統庫調用(二進制不兼容)函數,因爲某些符號保留一樣。結果通常是堆棧粉碎和