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
- Architectures,set to Standard architectures - $(ARCHS_STANDARD)
In - Build Active Architectures Only,set Debug to Yes,Release to No
- let Excluded Architectures empty
- 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
背景
使用模拟器编译时报如下错误:
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
- Architectures,set to Standard architectures - $(ARCHS_STANDARD)
In - Build Active Architectures Only,set Debug to Yes,Release to No
- let Excluded Architectures empty
- 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