微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何防止从静态链接库中导出符号?

我在Linux x86上创build了一个共享库。 在创build它,我已经静态链接在openssl。 OpenSSL只在内部使用,但我看到openssl符号已被导出。 这对于需要我的库和openssl的其他库会造成问题,因为错误的符号可以在运行时加载。 有没有办法阻止所有的openssl符号被导出,当我静态链接到我的共享库?

谢谢,迈克

架构上,共享对象(SO)和dynamic链接库(DLL)之间有什么区别?

ld找不到-l <库>

无法从可执行共享库中输出浮点数

如何在Linux上使用GDBdebuggingJava -JNI?

编译libstdc ++版本与系统版本

假设你使用的是gcc,当链接你的库时,设置-fvisibility = hidden并且在你的库源代码中,把所有你希望可见的函数标记为extern。 我认为这应该工作,只要openssl没有宣布自己的功能extern。

我认为,如果openssl已经声明了一些符号extern,你可以手动强制符号隐藏与编译指示。

还有其他的选择。 检查fvisibility部分中的gcc文档,以获取可用的完整说明。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐