我已经为 M1 Macs 制作了 Scilab 的本地构建(请参阅https://www.utc.fr/~mottelet/scilab_for_macOS.html),并且该应用程序在通过双击其图标启动时似乎触发了 Rosetta2,因此它的整体环境被错误地报告为 x86_64 而不是 arm64。例如,您可以从 Scilab 命令行启动 shell 命令并获取输出。例如uname -m
产量
--> unix_g("uname -m")
ans =
"x86_64
当 Scilab 从其图标启动或open
从终端使用时。
但是,当应用程序主脚本直接从终端启动时,即在此处键入
me@mac-M1 ~ % /Applications/scilab-branch-6.1.app/Contents/MacOS/scilab
由于应用程序已针对 arm64 架构编译,因此 Scilab 中的相同 unix 命令会产生预期结果:
--> unix_g("uname -m")
ans =
"arm64"
2021 年 1 月 6 日更新:
运行应用程序总是调用主scilab
脚本(稍后调用实际的scilab-bin
本机二进制文件)。当app被双击时yield得到的进程ps
列表
501 643 ?? 0:00.35 /bin/sh /Users/mottelet/Desktop/scilab-branch-6.1.app/Contents/MacOS/scilab
501 708 ?? 0:04.23 scilab-bin
正如您所猜测的那样,shell 的架构是错误的。我试过使用
<key>LSRequiresNativeExecution</key>
<true/>
但Info.plist
它并没有改变任何东西。
如何调试这个问题?提供一个更紧凑的例子并不容易。如果读者中的一些专家可以帮助我,您只需下载 Scilab arm64 构建(请参阅上面的链接)并从 dmg 存档(由 Apple 公证)中获取该应用程序。首次运行时,Scilab 将下载本机 Java 8 JRE。感谢您的帮助和见解!
S。