在iOS设备和iOS模拟器上运行时,它应该是什么体系结构

在iOS设备和iOS模拟器上运行时,它应该是什么体系结构,ios,xcode,x86-64,Ios,Xcode,X86 64,我已经用各种lib.a中的架构“arm64”、“armv7”和“x86”构建了一个fat库。当我为iOS设备编译项目时没有问题,但当我在iOS模拟器中尝试时,编译似乎出错了。上面写着“x86_64的未定义符号”。我可以想象我还需要x86_64 lib.a,但我想知道我能做些什么来解决这个问题 注: 从中手动编译的库 比你 编辑: 可能是因为来自的makefile,作为第一步,请确保您的肥箱中确实包含x86_64。 为此,您可以按如下方式检查w/cmd $ xcrun lipo -info you

我已经用各种lib.a中的架构“arm64”、“armv7”和“x86”构建了一个fat库。当我为iOS设备编译项目时没有问题,但当我在iOS模拟器中尝试时,编译似乎出错了。上面写着“x86_64的未定义符号”。我可以想象我还需要x86_64 lib.a,但我想知道我能做些什么来解决这个问题

注: 从中手动编译的库

比你

编辑:
可能是因为来自

的makefile,作为第一步,请确保您的肥箱中确实包含x86_64。 为此,您可以按如下方式检查w/cmd

$ xcrun lipo -info yourLibrary.a
如果您的库确实包含x86_64,那么它应该显示

Architectures in the fat file: yourLibrary.a are: x86_64 arm64 ...
例如,我为x86_64编译了libpng,为我的应用程序编译了arm64。xcrun命令如下所示

$ xcrun lipo -info libpng.a
  Architectures in the fat file: libpng.a are: x86_64 arm64 
不用说,fat bin同时具有arm64和x86(因为它是胖的)。因此,正如您在q中提到的,胖箱不需要单独的x86_64 lib.a


在确认fat bin中包含x86_64之后才检查Makefile。

第一步,确保fat bin中确实包含x86_64。 为此,您可以按如下方式检查w/cmd

$ xcrun lipo -info yourLibrary.a
如果您的库确实包含x86_64,那么它应该显示

Architectures in the fat file: yourLibrary.a are: x86_64 arm64 ...
例如,我为x86_64编译了libpng,为我的应用程序编译了arm64。xcrun命令如下所示

$ xcrun lipo -info libpng.a
  Architectures in the fat file: libpng.a are: x86_64 arm64 
不用说,fat bin同时具有arm64和x86(因为它是胖的)。因此,正如您在q中提到的,胖箱不需要单独的x86_64 lib.a



检查Makefile是在您确认fat bin具有x86_64之后。

您已经回答了自己的问题。您需要x86才能使用模拟器工作。但我认为x86(我已经)是一个…然后尝试只制作x86/64进行测试,看看它是如何工作的。然后你会看到错误,我明白了。我已按照提供的链接中的说明进行操作。您认为Makefile是否包含和选项?抱歉,所有这些都有点让人困惑……请多回答一点,因为你已经回答了自己的问题。您需要x86才能使用模拟器工作。但我认为x86(我已经)是一个…然后尝试只制作x86/64进行测试,看看它是如何工作的。然后你会看到错误,我明白了。我已按照提供的链接中的说明进行操作。您认为Makefile是否包含和选项?抱歉,所有这些都有点让人困惑…请多说一点,因为答案显然不在x86_64中。它说“fat文件中的架构:lib.a是:armv7 i386 arm64”。但这很奇怪,因为lib压缩文件上写着“x86”……我认为你的答案是正确的,因为你说了一些让我意识到为iOS x86编译还有另一种选择的话。你能告诉我iOS x86代表64位计算机的模拟器,i386代表32位计算机的模拟器吗?不太确定w/simulator。但当我在终端中键入“uname-a”时,它对我的32位mac显示“Darwin……i386”,对我的64位mac显示“Darwin……x86_64”。所以我相信i386是32位的。你可以用你的电脑检查一下。我在Makefile上看到了一点;在第50行,它检查$(iOs-x64)是否为1,这似乎是您所需要的。请检查一下。是的,这是我读了你的答案后意识到的。非常感谢。显然x86_64中没有。它说“fat文件中的架构:lib.a是:armv7 i386 arm64”。但这很奇怪,因为lib压缩文件上写着“x86”……我认为你的答案是正确的,因为你说了一些让我意识到为iOS x86编译还有另一种选择的话。你能告诉我iOS x86代表64位计算机的模拟器,i386代表32位计算机的模拟器吗?不太确定w/simulator。但当我在终端中键入“uname-a”时,它对我的32位mac显示“Darwin……i386”,对我的64位mac显示“Darwin……x86_64”。所以我相信i386是32位的。你可以用你的电脑检查一下。我在Makefile上看到了一点;在第50行,它检查$(iOs-x64)是否为1,这似乎是您所需要的。请检查一下。是的,这是我读了你的答案后意识到的。非常感谢你。