2009-06-19 51 views
2

導出功能,我想創建從OS X下GCC如何從靜態庫

使用GCC在一些靜態庫幾個靜態庫共享庫,有一個在共享庫調用它,我只是想無碼導出這些靜態庫中的符號。這在調試模式下工作,但不在釋放模式下(特別是當我啓用死碼條)時。我可以理解這個原因,gcc認爲這些函數在靜態庫上永遠不會被使用。但我如何強制gcc包含這些符號?

我已經嘗試給loader加上-u選項,但它只生成一個'local'符號。如何讓鏈接器生成一個導出符號?

而且,我不知道是否有添加源代碼的鏈接器指令,就像MSVC #pragrma comment(linker, "/INCLUDE:xxxx")

我在靜態庫中定義的功能的方式是這樣的:

extern "C" 
void test() {} 

謝謝提前! -Jonny

回答

1

你試過--whole-archive

0

使用ar將靜態庫反彙編爲其組成對象文件。然後將這些對象鏈接在一起以製作共享庫。

 
ar -x libstatic.a 
(produces a bunch of *.o files) 
gcc -shared -olibshared.so *.o # Linux 
ld -dylib -olibshared.dylib *.o # Mac OSX