问题1:Xocde 编译出现 Undefined symbols for architecture x86_64:
(gitLap拉取的同事代码)
系统以及软件版本的参数:
macOS 11.2
Xcode 12.4
ruby 3.0
pod 1.10.1
我的痛苦经历:
方案1:重新拉取 代码(多次尝试失败
)
方案2:重新pod install 失败
,重新 pod update 还是失败
podFile 添加了项目具体路径
project '/Users/dev4/Developer/iOS/MyApp/MyApp.xcodeproj'
# podFile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
project '/Users/dev4/Developer/iOS/MyApp/MyApp.xcodeproj'
target 'MyApp' do
pod 'xxx'
pod 'xxx'
pod 'xxx'
...
end
重新pod install 或 pod update 还是失败
方案3:查看是否引入文件和库, Targets -> Build Phases -> Compile Sources,结果都引入了(重新编译还是失败
)
方案4:
1、查看 architecture 的架构 是 arm64 没问题(Xcode -> Project -> Build settings -> Architectures -> Excluded architectures)
2、查看文件和库的引入路径 path 也没问题:
在(targets ——build settings —— other linker flags) 中是相对路径 $(inherited)Xcode clean 后(重新编译还是失败
)
另外:
对于M1 新建的项目,如果有pod库引入报错,使用以下方法可以解决:
Clean the project (⇧ + ⌘ + k)
然后 run
方案5(成功了):
项目移动到 m1电脑上运行不起来 ,原因是不支持x86的架构,如果对其他不影响的话,直接应用程序-Xcode - 勾选 Rosetta - 退出Xcode - 重新打开,编译运行即可。
解决问题很痛苦,给个赞吧!谢谢
扩展资料:
一、M1资料
1、了解M1
2、了解Rosetta
3、什么是Rosetta?
苹果在上个月推出了搭载 M1 自研芯片的 MacBook Air、Mac mini 以及 13 英寸 MacBook Pro。其中,苹果 M1 芯片与此前 Mac 采用的芯片最大不同是基于 ARM 架构,而不是过去英特尔芯片的 x86 架构。
二、arm版本选择支持
arm64 : 必选项,支持iphone5s及以上;最低支持版本:iOS5.1.1
armv7s:支持iPhone5及以上;
armv7:支持iPhone4及以上;
以上指令集,选择越多,打出来的包就越大;
若抛弃iPhone5s之前的机型,只需要选择arm64即可,这个包是最小的。
若要支持所有iPhone机型,选择armv7、arm64即可。
参考资料:
1、https://stackoverflow.com/questions/41162645/ios-cocoapods-could-not-automatically-select-an-xcode-project-specify-one-in-yo
2、missing one or more architectures required by this target: x86_64
3、如何在M1上编译带有CGO的Go项目
4、 Mac OS with M1 encounters with an error when using glfw glew
5、 Apple M1,逆向环境设置与我自己遇到了很多坑逐一解决,给后来的同学一个参考吧