要减小编译出来的 .so
文件的尺寸,可以通过去除符号表、调试信息等非必要的内容来实现:
一、Linux系统下方法
1. 使用 strip
命令
strip
命令可以删除 .so
文件中的符号表和调试信息,从而减小文件大小。
strip --strip-unneeded libyourlibrary.so
--strip-unneeded
参数只会删除不必要的符号,而保留那些可能在运行时使用的符号。
如果你不需要调试信息和符号表,可以使用更强力的选项:
strip --strip-all libyourlibrary.so
--strip-all
会删除所有符号和调试信息,这种方式会最大限度地减小.so
文件的大小。
2. 编译时使用优化选项
在编译时,使用 -s
选项来自动去除符号表:
gcc -o libyourlibrary.so -shared -s source_file.c
-s
选项会在编译过程中去除所有符号表。
3. 使用 ld
链接器优化选项
在链接时,使用 --gc-sections
选项去除未使用的代码段:
gcc -o libyourlibrary.so -shared source_file.c -Wl,--gc-sections
--gc-sections
选项会移除未被使用的代码段和数据段。
4. 使用 -ffunction-sections
和 -fdata-sections
在编译时,使用 -ffunction-sections
和 -fdata-sections
将每个函数和数据段放在各自的段中,使得链接器可以更容易地去除未使用的部分:
gcc -o libyourlibrary.so