无法使用解析库:解析链接器警告:文件是为不受支持的文件格式构建的

Posted

技术标签:

【中文标题】无法使用解析库:解析链接器警告:文件是为不受支持的文件格式构建的【英文标题】:Unable to use Parse library: Parse linker warning: file was built for unsupported file format 【发布时间】:2013-12-06 08:27:25 【问题描述】:

因此未加载符号并且我无法使用 Parse,尝试插入 #import 会导致找不到文件错误。我已经按照 Parse 网站上的快速入门指南进行了现有项目,并添加了所有必需的库(例如 AudioToolbox 框架等),所以这不是问题。

我得到的确切警告是:

ld:警告:忽略文件/Users/XXXXXXX/Documents/YYYYYYYY/Parse.framework/Parse,文件是为不受支持的文件格式构建的(0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E 0x74不是被链接的架构(i386):/Users/XXXXXXX/Documents/YYYYYYYY/Parse.framework/Parse

该项目是在 Xcode 5.02 中创建的,目标是 ios 6.1,如果需要任何进一步的信息,请告诉我。我下载了 Parse 入门项目并且构建良好,但似乎有一些自定义架构集,所以也许我可以尝试在我的项目中更改构建设置?

【问题讨论】:

【参考方案1】:

我知道这是旧的,但我遇到了同样的问题。十六进制数字可以替换为 ASCII 字符。 就我而言,我有这些十六进制数字:0x76 0x65 0x72 0x73 0x69 0x6F 0x6E 0x20 0x68 0x74 0x74 0x70 0x73 0x3A 0x2F 0x2F

翻译成 ASCII 码是version https://。我对字符串进行了递归 grep (grep -r "version http://" ./),在单个框架中,主文件包含该字符串。

一位同事似乎使用Git Large File Storage 在 Git 上存储了一个巨大的 SDK 文件,而他“忘记”向我提及...浪费了几个小时,但最终解决了。

【讨论】:

那么你做了什么来解决这个问题? 如果我没记错的话,我必须为 GitHub 安装大文件存储扩展,它又可以工作了。 以防万一其他人对通过 cocoapods 安装的框架有这个问题,我的解决方案是安装 git-lfs,清除 cocoapods 缓存,从我的项目中删除 pods 目录然后重新运行pod install 能否提供截图【参考方案2】:

我运行了命令

xcrun -sdk iphoneos lipo -info 解析

得到了

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: 无法确定架构类型:Parse

所以看起来添加框架会以某种方式损坏自身,或者是 xcode 5 错误。我删除了框架并重新添加了它,它现在可以工作了,上面的命令给出了

fat文件中的架构:解析为:armv7 armv7s i386 arm64 x86_64

【讨论】:

将自己标记为可能遇到类似问题的其他人的正确答案 它也可能将文件传输到不理解符号链接的系统。请参阅此示例:***.com/a/15246798/766570 我在另一个框架上遇到了同样的问题。执行“xcrun -sdk iphoneos lipo -info ”也让我“无法确定架构类型:”。我认为克隆框架时 git-lsf 存在问题。我不得不在 git 上手动下载损坏的文件并替换它。然后像魅力一样工作 我的也是类似的问题,因为框架已损坏。但我的原因是一个大型框架被 git 拉了过来。重做并修复我的git-lfs 实现,然后重新克隆解决了我的问题。 1. 确保您已安装自制软件。如果您不这样做,请使用/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" (brew.sh) 2. brew install git-lfs 重新安装它(如果已安装)。 3.git lfs install 4.git lfs install --system【参考方案3】:

“Parse.framework/Parse”是一个链接。而且编译器也不能用。把所有的链接都换成真实文件就可以了。

【讨论】:

【参考方案4】:

我知道这是一篇旧帖子,但我最近在绑定 iOS 框架时遇到了同样的问题。

file was built for unsupported file format ( 0x56 0x65 0x72 0x73 0x69 0x6F 0x6E 0x73 0x2F 0x43 0x75 0x72 0x72 0x65 0x6E 0x74 ) which is not the architecture being linked (arm64): ...

这是由于 iOS 框架结构中的 Mac Alias 链接损坏造成的,可能是在 VSTS (git) 中合并代码或在 Windows 中打开这些文件。它本质上将它们更改为简单的文本文件。您可以通过单击这些应该是别名并且路由不起作用的文件来轻松验证这一点。

注意:这最初是在完成的 Mac 上,但团队中的一些人使用的是 Windows。然而,当 git 被合并时,这似乎更为普遍。

这里的问题是 Xamarin 绑定项目构建,直到您尝试在应用程序或测试工具中使用 DLL,它才会产生警告和错误。手动重新安装 Mac Alias 或获取原始框架可解决此问题。

【讨论】:

【参考方案5】:

在 MacOS 上造成这种情况的一个原因是您的 PATH 上有 GNU Binutils(如 arranlib)。运行ar --versionranlib --version。他们应该谈论 GNU。

如果您使用 Brew 安装它们,请尝试 brew unlink binutils,然后进行全面清理和重建。

【讨论】:

以上是关于无法使用解析库:解析链接器警告:文件是为不受支持的文件格式构建的的主要内容,如果未能解决你的问题,请参考以下文章

链接器如何使用静态库解析引用

使用 facebook 登录显示错误为不受支持的请求并且无法登录

ChromeBaiduPan Explorer 百度网盘高速下载链接解析

无法解析的外部符号

sbt/ivy 无法解析通配符 ivy 对文件系统解析器的依赖

无法使用 Visual Studio Code 中的自定义库解析导入