我在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 举报,一经查实,本站将立刻删除。