繁体   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