Xcode存档调试条错误

时间:2012-07-31 15:02:15

标签: ios xcode strip

我正在尝试将大型旧版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)

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

9 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

在我的情况下,我将以下内容添加到我的库目标构建设置并开始正常工作:

  • 死码剥离:否

  • 复制期间剥离调试符号:对于所有配置都为NO

  • 剥离样式:非全局符号

答案 2 :(得分:1)

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

答案 3 :(得分:1)

在Xcode 11.5上,我通过在Framework目标的Strip Linked Product中将No设置为Build Settings来解决了这个问题。

答案 4 :(得分:0)

我遇到了同样的问题,但我将DEPLOYMENT POSTPROCESSING修改为NO,但它不起作用。

我刚刚访问了目标中的Build Phases标签,并在Copy Bundle Resources我删除了Foundation.framework,然后我将Foundation.framework添加到Link Binary With Libraries,它有效对我来说!

希望能解决你的问题!

答案 5 :(得分:0)

Xcode中的默认Strip StyleAll Symbols,对于可执行文件是可以的,但是对于库,您必须将其设置为Non-Global Symbols,因为必须保留全局符号。

由于剥离仅作为部署后处理的一部分进行,因此调试构建通常不受此选项的影响,因为对于它们而言,设置DEPLOYMENT_POSTPROCESSING通常设置为NO。但是,在存档时,您将创建一个发布版本,并且DEPLOYMENT_POSTPROCESSING在此处默认情况下设置为YES,因此您需要设置正确的剥离样式。

答案 6 :(得分:0)

对我有用的是,当我决定修复Xcode 10.1中的另一个问题时,我的模拟器没有启动,直到真正需要它之前我都忽略了它,运行下面的命令可以解决此问题

sudo chmod 1777 /private/tmp

答案 7 :(得分:0)

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

答案 8 :(得分:-3)

尝试设置 STRIP_INSTALLED_PRODUCT为您的目标(您正在收到错误的一个)构建设置为否 如果这不起作用,那么请尝试以下选项

  • 死码剥离:否
  • 复制期间剥离调试符号:所有配置均为NO
  • 剥离样式:非全局符号

希望这能解决你的问题。