admin管理员组

文章数量:1794759

Xcode

Xcode

背景

使用模拟器编译时报如下错误:

ld: in /Users/xxx/Documents/xx/svn/xxx/xxx/External/Captuvo/libCaptuvo
SDK.a(Captuvo.o), building for iOS Simulator, but linking in 
object file built for iOS, for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

原因是编译时,Xcode 链接 Captuvo 这个SDK的时候,链接到了真机构建的SDK上,所以提示的是arm64。而模拟器编译时候需要链接到模拟器编译的SDK,应该是x864或者i386。这个做过SDK开发的应该都知道。

Captuvo这个SDK其实是支持真机和模拟器的,只是Xcode编译项目时没链接到正确的SDK路径。

Xcode12以及之后需要对VALID_ARCHS做一些设置。

VALID_ARCHS

Xcode 12
TARGET -> BuildSetting -> User-Defined -> VALID_ARCHS

这个设置告诉编译器去链接什么样的库,是模拟器类型的x864还是真机arm64。

如果使用真机进行编译或打包,需要将VALID_ARCHS设置为arm64,这样真机就可以正常编译了。如果使用模拟器编译或者打包的话,将arm64的设置删除掉就可以了,设置为空。

但是这样在模拟器合真机之间切换的话还是比较麻烦的。

In your project Build Settings

  1. Architectures,set to Standard architectures - $(ARCHS_STANDARD)
    In
  2. Build Active Architectures Only,set Debug to Yes,Release to No
  3. let Excluded Architectures empty
  4. VALID_ARCHS, set to arm64 arm64e x86_64

相关

[1] The file “xxx” couldn’t be opened because you don’t have permission to view it. You don’t have permi =1001.2014.3001.5501

本文标签: xcode