加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何阻止从静态链接库中导出符号?

发布时间:2020-12-14 01:39:18 所属栏目:Linux 来源:网络整理
导读:我在 linux x86上创建了一个共享库.在创建它时,我在openssl中静态链接. OpenSSL仅在内部使用,但我看到openssl符号已导出.这会导致需要我的库和openssl的其他库出现问题,因为可以在运行时加载错误的符号.当我将其静态链接到我的共享库时,有没有办法阻止所有op
我在 linux x86上创建了一个共享库.在创建它时,我在openssl中静态链接. OpenSSL仅在内部使用,但我看到openssl符号已导出.这会导致需要我的库和openssl的其他库出现问题,因为可以在运行时加载错误的符号.当我将其静态链接到我的共享库时,有没有办法阻止所有openssl符号导出?

谢谢,
麦克风

解决方法

假设您正在使用gcc,在链接库时,设置-fvisibility = hidden并在库源中,将所有要显示的函数标记为extern.我认为只要openssl没有声明自己的函数extern,这应该工作.

我想如果openssl声明了一些extern符号,你可以手动强制用pragma隐藏符号.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读