共享对象与代码模型详解
1. 动态库性能优化
在使用动态库时,有多个因素会影响性能,下面为你详细介绍优化方法:
1.1 编译器选项
- -fPIC 选项 :务必使用
-fPIC编译器选项。若不使用,.text节也会被重定位,使动态库的使用吸引力大减。 - 禁用部分优化 :要禁用可能导致动态库无法正常工作的优化。
1.2 符号可见性控制
- 使用 static 关键字 :在动态库中,若函数声明为
static,则不会被导出,可直接调用,无需 PLT 开销。应尽量使用static限制符号仅在单个文件内可见。 - -fvisibility 开关 :GCC 支持四种可见性类型(默认、隐藏、内部、受保护),常用的是前两种。可使用
-fvisibility编译器开关控制所有符号的可见性,示例如下:
gcc -fvisibility=hidden ... # 隐藏共享对象中的所有符号
- attribute 指令 :通过
__attrib
超级会员免费看
订阅专栏 解锁全文
3646

被折叠的 条评论
为什么被折叠?



