我正在尝试剥离所有不需要的符号的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框架上。
有什么建议吗?
答案 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'”。 )