我正在尝试执行在 macOS 10.14.x 上运行的已编译 Lazarus 文件。更新到 10.15 后,我开始收到错误消息“可执行文件中的 CPU 类型错误”,据我了解,这意味着它不再兼容。
./myScript
->>>>>>>>>>>>>>> bad CPU type in executable
file myScript
->>>>>>>>>>>>>>> Mach-O executable i386
uname -a
->>>>>>>>>>>>>>> Darwin-MacBook-Air.local 19.0.0 Darwin Kernel Version 19.0.0: Thu Oct 17 16:17:15 PDT 2019; root:xnu-6153.41.3~29/RELEASE_X86_64 x86_64
uname -p
->>>>>>>>>>>>>>> i386
我想知道为什么这个可执行文件会导致这个错误,而 i386 必须与这个版本兼容?
有没有办法在 macOS 10.15.x 上运行它?或者是使用不同的、兼容的构建设置再次构建它的唯一方法?(Lazarus 尚不支持此功能。)
macOS Catalina (10.15)放弃了对 32 位可执行文件的支持,这就是您的可执行文件不再工作的原因。
理想的解决方案是构建一个 64 位二进制文件。Lazarus wiki描述了如何做到这一点:以 x86_64 为目标,使用 Cocoa 小部件,并使用
fpc
而不是ppc386
.