簡體   English   中英

在 M1 Apple 芯片上構建 ARM64e

[英]Building for ARM64e on M1 Apple silicon

我正在構建我的命令行應用程序,並注意到我創建的所有二進制文件都是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 不穩定,除了蘋果之外沒有人使用?

針對 arm64 和 arm64e 的主要區別在於ARMv8.3 的 Pointer Authentication Codes 由於特定的 ABI 尚未穩定,Apple 僅將其用於自己的平台代碼,因為他們可以通過發布新操作系統輕松地用不同的 ABI 重新編譯整個操作系統版本,而他們不能真正強迫所有開發人員開始使用新的 ABI。

盡管如此,您只需在架構下拉列表中選擇“其他...”並輸入arm64e即可為 arm64e 進行編譯。 默認情況下,macOS 將拒絕運行任何具有 arm64e 切片的非 Apple 代碼(因為他們希望阻止任何人在 ABI 穩定之前發布 arm64e 代碼)。 但是,您可以通過設置arm64e_preview_abi引導參數來覆蓋此行為並允許 macOS 運行非 Apple arm64e 代碼:

sudo nvram boot-args=-arm64e_preview_abi

請注意,您需要禁用系統完整性保護才能這樣做。 這個 bootarg 旨在允許開發人員准備他們的軟件以在啟用指針身份驗證的情況下運行,實際上僅此而已。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM