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

3
我正在构建一个共享库,其中包含一个名为public.o的公共接口。
该共享库由100多个其他对象文件组成,我希望尽可能减小.so文件的大小。是否有一种方法可以从共享库中删除所有未被public.o引用的符号?或者,是否有一种方法只保留extern "C"函数的依赖关系,同时剥离所有未使用的C++名称?

问题已在此回答:https://dev59.com/L3I95IYBdhLWcg3w7SpZ - user48956
2个回答

2

1

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

添加)您还可以尝试使用visibility属性。

但我不会过多关注*.so文件的大小。


4
去除未使用的符号将我们的库大小从15Mb减少到了300kb。这是为嵌入式Linux设备设计的 - 这是相当大的节省。 - user48956

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接