簡體   English   中英

GCC如何從靜態庫導出函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM