nix*_*get 17 c++ linux visibility gnu dynamic-linking
我有一个关于C++可见性属性的问题.我已经阅读了http://gcc.gnu.org/wiki/Visibility,但我不太明白它是如何工作的.
我希望在我的一些共享库中隐藏可见性.我相信这意味着符号被隐藏了吗?
你打算如何链接共享库呢?有特殊的方式吗?如果我链接它通常如何链接它不起作用.
有谁可以帮助我吗.
CB *_*ley 32
-fvisibility=hidden默认情况下隐藏所有符号.
接下来要做的是选择哪些函数对于链接到库的用户是可见的,并通过用可见属性标记它们使它们可见.
例如
void __attribute__((visibility("default"))) Exported()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
它减少了保留共享对象私有的不必要的符号信息。
考虑一个共享对象,它有 10,000 多个符号(函数/全局变量),但其中只有 100 个是库用户可访问的公共函数。我们可以将仅有的 100 个函数设为对其他人可见,其余 9,900 个符号设为私有。
它也会减少共享对象的大小,因为它的重定位表将只有 100 个信息符号。将此标志与-ffunction-sections -fdata-sections一起使用将通过具有与这 100 个符号相关的定义进一步减小共享对象的大小。
| 归档时间: |
|
| 查看次数: |
21230 次 |
| 最近记录: |