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

发布于 2024-11-29 21:37:11 字数 160 浏览 1 评论 0原文

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

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

I'm building a shared library that contains a public interface found some object file public.o

The shared library is composed of 100+ other objects files and I want to minimize the size if the .so file. Is there a way to remove of all the symbols from from the shared library that are not referenced by public.o? Alternatively, is there a way to retain only dependencies of extern "C" functions, stripping all of the unused C++ names?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

执手闯天涯 2024-12-06 21:37:11

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

Look at this manual:
http://gcc.gnu.org/wiki/Visibility
it explains for example how to handle C++ names stuff.

孤芳又自赏 2024-12-06 21:37:11

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

添加)您还可以使用可见性 属性。

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

You might use a recent GCC (e.g. a 4.6.1 version) and pass -flto at compile and at (library) link time.

(added) You could also play with the visibility attribute.

But I won't bother about the size of an *.so

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文