如何从共享库中删除未使用的引用(elf / gcc)

时间:2011-08-17 21:29:17

标签: c gcc linker android-ndk ld

我正在构建一个包含公共接口的共享库,其中包含一些对象文件public.o

共享库由100多个其他对象文件组成,我想最小化.so文件的大小。有没有办法从共享库中删除未被public.o引用的所有符号?或者,有没有办法只保留extern“C”函数的依赖关系,剥离所有未使用的C ++名称?

2 个答案:

答案 0 :(得分:2)

查看本手册:
http://gcc.gnu.org/wiki/Visibility
它解释了例如如何处理C ++名称的东西。

答案 1 :(得分:1)

您可以使用最近的GCC(例如4.6.1版本)并在编译和(库)链接时传递-flto

已添加)您还可以使用visibility属性进行播放。

但我不会打扰* .so

的大小