[英]GCC How to export a function from static library
我想在OS X下使用GCC從幾個靜態庫創建一個共享庫。
在某些靜態庫中,共享庫中沒有代碼調用它,我只想導出這些靜態庫中的符號。 這可以在調試模式下工作,但不能在發布模式下工作(特別是當我啟用無效代碼條帶化時)。 我能理解原因,gcc認為這些靜態庫上的函數從未使用過。 但是如何強制gcc包含這些符號?
我已經嘗試為加載程序添加-u選項,但是它只會生成一個“本地”符號。 如何使鏈接器生成導出符號?
此外,我想知道是否有一種方法可以在源代碼中添加鏈接器指令,就像MSVC #pragrma comment(linker, "/INCLUDE:xxxx")
我在靜態庫中定義的功能如下:
extern "C"
void test() {}
提前致謝! -Jonny
您是否嘗試過--whole-archive
?
使用ar將靜態庫反匯編成它們的組成對象文件。 然后將這些對象鏈接在一起以創建共享庫。
ar -x libstatic.a (produces a bunch of *.o files) gcc -shared -olibshared.so *.o # Linux ld -dylib -olibshared.dylib *.o # Mac OSX
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.