为了账号安全,请及时绑定邮箱和手机立即绑定

链接共享库时限制符号的可见性

链接共享库时限制符号的可见性

慕后森 2019-09-21 15:00:25
某些平台要求您为链接程序提供共享库的外部符号列表。但是,在大多数unixish系统上,这不是必需的:默认情况下,所有非静态符号都将可用。我的理解是,GNU工具链可以选择性地将可见性限制为明确声明的符号。如何使用GNU ld来实现?
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

我认为最简单的方法是将-fvisibility=hiddengcc选项添加到gcc选项中,并在代码中显式公开某些符号的可见性(by __attribute__((visibility("default"))))。请参阅此处的文档。


可能有一种方法可以通过ld链接程序脚本来实现,但是我对此并不了解。


查看完整回答
反对 回复 2019-09-21
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

生成的用于调用任何导出的函数或使用任何导出的全局代码的代码比未导出的代码效率低。有一个额外的间接级别。这适用于在编译可能导出的任何函数。gcc仍会为链接器脚本以后未导出的函数产生额外的间接调用。因此,使用可见性属性将产生比链接脚本更好的代码。


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 501 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信