链接静态库后删除名称

时间:2013-08-30 08:36:54

标签: ios xcode static-libraries debug-symbols toolchain

在iOS 6的静态库项目中,.c文件中的某些函数被其他人引用,因此被视为全局符号,但不应向该库的用户公开。

我如何strip这些功能名称出来?另外,我如何隐藏这些obj文件名,以便没有人能在nm输出中看到.o名称?

我尝试启用/设置:

  • 部署后处理
  • 复制期间删除调试符号
  • 剥离链接产品
  • Strip Stype:“非全局符号”或“调试符号”
  • 使用单独的条带

修改

我看到还有另一个Build Setting项目'Additional Strip Flags'。 通过在其中添加标志-R /path/to/symbol_list_filestrip命令将删除文件中指示的符号,或-s /path/to/exported_symbol_list_file -u以指示接口并同时保留未定义的符号。

1 个答案:

答案 0 :(得分:2)

不,你不能。静态库只是对象文件的集合,静态库中的对象文件对使用静态库没有特殊权限。

你显然可以strip最后的二进制文件。

如果你必须隐藏符号,那么它们必须是static,这迫使你使用较少的实现文件来允许共享符号,这是不方便的。