我試圖使用--whole-archive
選項,但它似乎不適用於-Xlinker
。我如何使用 - Xlinker
來添加此選項?如何從靜態庫中添加特定符號
下面是整個故事: 我寫了一個主程序A和幾個共享庫B1,B2等。主程序將使用dlopen在運行時加載這些共享庫。我編譯主程序A與主程序(S1,S2 ...等)或共享庫(S3,S4 ...等)使用的所有可能的靜態庫鏈接。然後我編譯沒有靜態庫的共享庫。 當調用dlopen時,由於共享庫中的未定義符號,程序失敗。這個符號確實存在於靜態庫S3中,但我在主程序的符號表中找不到它。
因此,我在編譯主程序時添加--whole-archive選項,但該符號仍然不存在於最終的二進制文件中。如何將這個符號添加到主程序中,而不是直接在主程序中使用。
假設你使用的是GNU binutils,''-whole-archive'與'-Xlinker'完美兼容。你可能想澄清一下你的問題:你使用的是什麼命令行,是什麼讓你相信' - 整個檔案文件'不起作用,等等。 –
謝謝我已經使整個故事更加清晰 – Shawn