15

我正在尝试将大型遗留 C++ 库与 iOS 应用程序集成。我们能够在设备上构建和运行,但我们无法存档应用程序。存档失败并出现以下错误。

命令 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip 失败,退出代码为 1

我在试纸条上做了一个“-v”,得到了一系列类似的警告

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip:无法剥离的重定位条目引用的符号: /MyApp/DerivedData/SmartMusic_iPad/Build/Intermediates/ArchiveIntermediates/MyApp /IntermediateBuildFilesPath/UninstalledProducts/libMyLib-iOS.a(MyWhatever.o)

目前尚不清楚此消息是警告还是失败的原因。条带输出中没有其他问题迹象。有什么线索吗?

4

9 回答 9

7

在静态库目标的构建设置下,为“部署后处理”和“在复制期间剥离调试符号”选择否。它是编译后的代码,因此不需要剥离符号。我遇到了同样的错误('usr/bin/strip failed with exit code 1'),这为我解决了这个问题。

于 2013-05-24T14:41:48.367 回答
5

就我而言,我将以下内容添加到我的库目标构建设置中并开始正常工作:

  • 死代码剥离:否

  • 在复制过程中去除调试符号:所有配置都没有

  • 条带样式:非全局符号

于 2015-09-15T08:57:38.213 回答
2

Strip StyleXcode 中的默认值是All Symbols,这对于可执行文件是可以的,但是对于一个库,您需要将其设置为,Non-Global Symbols因为必须保留全局符号。

由于剥离仅作为部署后处理的一部分完成,因此调试构建通常不受此选项的影响,因为对于它们,设置 DEPLOYMENT_POSTPROCESSING 通常设置为 NO。但是,在归档时,您创建了一个发布版本,并且这里 DEPLOYMENT_POSTPROCESSING 默认设置为 YES,因此您需要设置正确的条形样式。

于 2019-04-26T14:48:42.150 回答
1

有不同的选项strip(请参阅手册页),我认为您会想要使用该-r选项。您可以在 Xcode 项目设置中设置要执行的剥离类型。看看您是否可以将 Xcode 中的选项与手册页中的选项相关联。

于 2012-07-31T15:06:34.990 回答
1

我有同样的问题,但我编辑DEPLOYMENT POSTPROCESSINGNO但它不起作用。

我只是去Build Phases我的目标中的标签,并在Copy Bundle Resources我删除Foundation.framework,然后我添加Foundation.frameworkLink Binary With Libraries,它对我有用!

希望这将解决您的问题!

于 2014-11-07T08:06:25.257 回答
1

我通过释放更多空间来修复此错误

于 2019-11-06T07:22:53.593 回答
1

对我有用的是,当我决定修复 Xcode 10.1 中的另一个问题时,我的模拟器没有启动,直到我真正需要它时我才忽略它,运行下面的命令有助于解决这个问题

sudo chmod 1777 /private/tmp
于 2019-11-02T12:22:00.167 回答
1

在 Xcode 11.5 上,我通过设置Strip Linked Product为框架目标解决了这个No问题。Build Settings

于 2020-06-20T21:28:25.887 回答
-4

尝试将 STRIP_INSTALLED_PRODUCT 设置为 No 为您的目标(您遇到错误的目标)构建设置。
如果这不起作用,请尝试以下选项以及上述选项

  • 死代码剥离:否
  • 在复制过程中去除调试符号:所有配置都没有
  • 条带样式:非全局符号

希望这能解决您的问题。

于 2017-04-20T13:14:20.800 回答