【问题标题】:Strip names after linking a static library链接静态库后去除名称
【发布时间】:2013-08-30 08:36:54
【问题描述】:

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

我怎样才能strip这些函数名出来?另外,我怎样才能隐藏那些 obj 文件名,以便没有人可以看到 nm 输出中的 .o 名称?

我已尝试启用/设置:

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

编辑:

我看到还有另一个构建设置项“附加条形标志”。 通过在其中添加标志-R /path/to/symbol_list_filestrip 命令将删除文件中指示的符号,或-s /path/to/exported_symbol_list_file -u 指示接口并同时留下未定义的符号。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我可以做些什么来隐藏实现细节/链接信息,例如来自我的静态库的 3rd 方客户端的 .o 文件的路径?它会被混淆吗,至少在发布版本中?
    • @ZhangChn 好吧,我能想到的唯一方法是将所有实现(或至少您想要保护的东西)放入库中的单个 .o 文件中。这有点垃圾,但请告诉我你要隐藏什么以及为什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多