我将 macOS 驱动程序包系统扩展编译为通用库,以便它同时包含x86_64
和arm64
. 一台 Apple Silicon 计算机 A 连接 USB 设备时驱动程序启动。在连接 USB 设备时,在 Apple Silicon 计算机上,BI 可以kernel: exec_mach_imgact: disallowing arm64 platform driverkit binary "com.example.driver", should be arm64e
在 Console.app 中看到正在打印。我查看了发生这种情况的源代码
,但我无法弄清楚问题所在。如果我编译它arm64e
然后它会exec_mach_imgact: not running binary "com.example.driver" built against preview arm64e
在计算机 A 上运行,然后它会在计算机 B 上启动。
没有一台电脑-arm64e_preview_abi
设置在boot-args
.
如果我在每台机器上创建一个新的 Xcode (12.4) 项目并构建 Release 然后计算机 A 并otool -fvv com.example.driver
给出
Fat headers
fat_magic FAT_MAGIC
nfat_arch 2
architecture x86_64
cputype CPU_TYPE_X86_64
cpusubtype CPU_SUBTYPE_X86_64_ALL
capabilities 0x0
offset 16384
size 73856
align 2^14 (16384)
architecture arm64
cputype CPU_TYPE_ARM64
cpusubtype CPU_SUBTYPE_ARM64_ALL
capabilities 0x0
offset 98304
size 73856
align 2^14 (16384)
在计算机 B 上,相同的命令给出
Fat headers
fat_magic FAT_MAGIC
nfat_arch 2
architecture x86_64
cputype CPU_TYPE_X86_64
cpusubtype CPU_SUBTYPE_X86_64_ALL
capabilities 0x0
offset 16384
size 73280
align 2^14 (16384)
architecture arm64
cputype CPU_TYPE_ARM64
cpusubtype CPU_SUBTYPE_ARM64_ALL
capabilities 0x0
offset 98304
size 73296
align 2^14 (16384)
如何让驱动程序在两台机器上启动?