无法在Mac OS X c ++应用程序上删除所有不需要的符号?

时间:2010-11-21 05:04:03

标签: c++ macos osx-snow-leopard strip

我正在尝试剥离所有不需要的符号的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框架上。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

Visibility of Inline Functions

Technical Note TN2185: C++ Tips and Tricks for Mac OS X

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

[GCC_INLINES_ARE_PRIVATE_EXTERN,-fvisibility-inlines-hidden]“启用时,内联方法的外联副本被声明为'private extern'”。 )