Linux下减小动态库大小的方法
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
在一些业务场景下,需要对动态库的大小进行限制,主要有如下几种方法:
1. 编译选项使用-Os,表示以最小化大小为优化方向
2. 去除-g选项,进而去除调试信息
3. 通过strip裁剪符号及调试信息
4. 只导出必要符号
Linux默认导出所有符号,并不仅仅导出你开放的接口!
定义如下宏:
#define SYMBOL_EXPORT __attribute__ ((visibility("default")))
在你想导出的符号前加上SYMBOL_EXPORT就好。
同时,需要在脚本中增加如下编译选项:-fvisibility=hidden
譬如:导出符号是int add(int a, int b);那么添加的结果就是SYMBOL_EXPORT int add(int a, int b);
通过这种方式只导出想导出的符号,也可以减小库大小。
备注
“default”:用它定义的符号将被导出,动态库中的函数默认是可见的。”hidden”:用它定义的符号将不被导出,并且不能从其它对象进行使用,动态库中的函数是被隐藏的。
default意味着该方法对其它模块是可见的。而hidden表面该方法符号不会被放到动态符号表里,所以其它模块(可执行文件或者动态库)不可以通过符号表访问该方法。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献1条内容
所有评论(0)