某些平台要求您为链接程序提供共享库的外部符号列表。但是,在大多数unixish系统上,这不是必需的:默认情况下,所有非静态符号都将可用。我的理解是,GNU工具链可以选择性地将可见性限制为明确声明的符号。如何使用GNU ld来实现?
3 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
我认为最简单的方法是将-fvisibility=hiddengcc选项添加到gcc选项中,并在代码中显式公开某些符号的可见性(by __attribute__((visibility("default"))))。请参阅此处的文档。
可能有一种方法可以通过ld链接程序脚本来实现,但是我对此并不了解。
慕的地8271018
TA贡献1796条经验 获得超4个赞
生成的用于调用任何导出的函数或使用任何导出的全局代码的代码比未导出的代码效率低。有一个额外的间接级别。这适用于在编译时可能导出的任何函数。gcc仍会为链接器脚本以后未导出的函数产生额外的间接调用。因此,使用可见性属性将产生比链接脚本更好的代码。
- 3 回答
- 0 关注
- 546 浏览
添加回答
举报
0/150
提交
取消