2009-06-19 49 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