【问题标题】:How to remove unused references from a shared library (elf/gcc)如何从共享库中删除未使用的引用 (elf/gcc)
【发布时间】:2011-08-17 21:29:17
【问题描述】:

我正在构建一个包含公共接口的共享库,发现一些目标文件 public.o

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

【问题讨论】:

标签: c gcc linker android-ndk ld


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    添加)您也可以使用visibility 属性。

    但我不会关心 *.so 的大小

    【讨论】:

    • 剥离未使用的符号将我们的库大小从 15Mb 减少到 300kb。它适用于嵌入式 Linux 设备 - 这非常省钱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2020-03-18
    • 2010-10-18
    相关资源
    最近更新 更多