我正在尝试将大型旧版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)
目前尚不清楚此消息是警告还是失败的原因。条带输出中没有其他迹象表明存在问题。有线索吗?
答案 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 Style
是All 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为您的目标(您正在收到错误的一个)构建设置为否 如果这不起作用,那么请尝试以下选项
希望这能解决你的问题。