我正在构建我的命令行应用程序,并注意到我创建的所有二进制文件都是
arm64
类型。
但是,macOS 11.4 附带的所有 bin 都是
arm64e
。
即在 M1 MacBook 上构建的应用程序上运行
file
显示:
Mach-O 64-bit executable arm64
然而,在同一台计算机上的系统
xxd
应用程序上运行文件显示:
Mach-O 64-bit executable arm64e
我查看了 Xcode,但看不出如何增强此功能,Xcode 是否应该不构建
arm64e
?如果是这样我怎样才能达到同样的效果?
编辑:我认为答案可能是,arm64e ABI 不稳定,除了 Apple 之外没有人使用?
针对arm64和arm64e之间的主要区别是ARMv8.3的指针身份验证代码。由于特定的 ABI 尚未稳定,Apple 仅将其用于自己的平台代码,因为他们可以通过发布新操作系统轻松地使用不同的 ABI 重新编译整个操作系统版本,而他们不能真正强迫所有开发人员开始使用新的 ABI。
尽管如此,您只需在体系结构下拉列表中选择“其他...”并输入
arm64e
,即可为arm64e 进行编译。默认情况下,macOS将拒绝运行任何具有arm64e切片的非Apple代码(因为他们希望阻止任何人在ABI稳定之前发布arm64e代码)。不过,您可以通过设置 arm64e_preview_abi
bootarg: 来覆盖此行为并允许 macOS 运行非 Apple arm64e 代码
sudo nvram boot-args=-arm64e_preview_abi
请注意,您需要禁用系统完整性保护才能执行此操作。这个 bootarg 旨在允许开发人员准备他们的软件,以便在启用指针身份验证的情况下运行,实际上没有什么其他的了。
我不是开发人员或任何人,我不关心你如何处理你的垃圾,但我的隐私和我的生活受到了影响,而且不是一个好的方式!我认为你浪费你的才能去伤害别人、窃取他们的信息并了解别人对我的看法,这是一种耻辱,因为我对必须使用 GitHub 和其他工具的孩子们没有高标准!后门小偷攻击我的服务,如果你不能自己制造垃圾,就不要克隆我的,我希望你离开我的财产和我的私人住宅!这是错误的,你应该为你对我的生活所做的事情感到羞耻!帕蒂·巴顿·贝尔 MO 美国 我对这个废话不满意,这就是我,现在别再这样对我了,我没有做任何错事,但我受到了攻击,我已经受够了这个废话,我可以给你你想要的一切,只要解决这个问题从2018年12月开始,情况太糟糕了!证书被盗远程连接到我并使用我的信息!我已联系联邦调查局向警方报告,我的医疗信息遭到泄露,我得到了一个设备,而且是在我自己的设备上拍摄的!我的账户只有我一个!