0

我正在尝试剥离我的 mac os x 应用程序中所有不需要的符号。如果我使用“--strip-unneeded”在我的 linux 应用程序上执行此操作,则我的应用程序上的符号表为空并且不返回任何内容。

在 Mac OS X 上,我看到与我的类的 typeinfo 和 vtable 条目以及一些函数相关的符号。据我所知,这发生在标题中定义并标记为内联的函数上。来自外部库的未定义函数出现在 nm 输出中,但标有“U”。

strip -u -r myapp 似乎没有删除它们。

尝试将它们放入删除文件并执行:strip -u -r -R remove_file.txt myapp

也不行。这是一个单一的二进制文件,其唯一的共享库依赖于 corefoundation 和 veclib 框架。

请问有什么建议吗?

4

1 回答 1

1

没有明确的解决方案(我仍在学习 C++(和 Objective C++)并学习自己处理这些东西),但你可以看看:

内联函数的可见性

技术说明 TN2185:Mac OS X 的 C++ 提示和技巧

“隐藏的内联方法”的当前设置是什么?(双击 Groups & Files 列中的目标,切换到 Build 选项卡,向下滚动到 Code Generation,或者是这个设置:

[GCC_INLINES_ARE_PRIVATE_EXTERN, -fvisibility-inlines-hidden] “启用后,内联方法的外联副本被声明为‘私有外部’”。)

于 2010-11-21T05:17:53.840 回答