
程序需要使用 matlabruntime 运行库,但是生产环境采购的 arm 架构的服务器,但是 matlabruntime 没有 arm 架构的包,只有 macos 系统提供了 arm 架构的包。 现在想的几种解决方法 1 ,arm 架构上模拟 x86 架构的虚拟机 这种方法试过了,由于服务器也不支持硬件虚拟化,这个虚拟机运行特别慢,没办法用 2 ,arm 架构上模拟 arm 架构的 macos 虚拟机 这个正打算尝试,但是浏览器搜索几乎没有方法,找到的都是 x86 上模拟 x86 的 macos 系统。问 chatgpt 和 deepseek 都说 macOS ARM 版本(如 macOS Sonoma )依赖于 Apple M 系列芯片的专有硬件特性,如 Secure Enclave 、APFS 加密、SIP (系统完整性保护)和特定的设备树结构。 这种方法好像也不行。 问下大佬是不是现在也是不行,还有 matlab 有没有 linux 的 arm 版本的包。
1 Aboceder 222 天前 应该不行,M 系列的 mac 使用 pd 装 windos 都只能装 arm 架构的,反之亦是同理 |
2 xclimbing 222 天前 我觉得运行不起来,专有硬件。应该问 matlab 有没有软件解决方案。 |
3 MacsedProtoss 222 天前 via iPhone 目前没有办法模拟 arm macOS macOS 的 M 系魔改 arm 魔改到妈都不认识了 qemu 目前完全搞不定 |
4 HojiOShi 222 天前 翻翻 GNU Octave 的源码,迁移一下算了。话说 arm 架构的服务器应该是飞腾之类的吧。 |
5 424778940 222 天前 简单翻了一下官方文档和论坛 runtime 应该也就一堆 so/dll 动态库 没有 linux 的 aarch64 版本 但好像可以直接交叉编译 aarch64 的程序出来 也许可以直接静态连接? |
6 yinmin 222 天前 你试一下 matlabruntime 的 docker 镜像是否有 arm64 版本(貌似有的),如果有的话,直接部署在 Docker 容器里。 |
7 mxT52CRuqR6o5 222 天前 box86/box64 ,不需要完全虚拟一个新系统 |
8 mayli 221 天前 生产环境弄点正常的吧,都用 matlab 了,为啥不用普通的 x86. |
9 flyqie 221 天前 via Android chatgpt 说的对。 apple 的那个 soc 改了太多了,很难去模拟,目前也没有类似方案。 |
10 seancullen 221 天前 在 docker 里跑 macos |
11 seancullen 221 天前 |
12 flyqie 221 天前 via Android |
13 ranaanna 221 天前 @seancullen 完全没有可能在 generic aarch64 上运行 macos 的,包括 docker 镜像。给的链接,即使能成功运行也只适用于 x86-64 架构的苹果和黑苹果硬件 |
14 ranaanna 221 天前 matlab (包括其运行库)只支持运行于 x86-64 上的 windows, linux 和 macos (及之前的 os x),从 r2023b 开始支持运行于 apple silicon 上的 macos ,其他一概不行 如果想在其他硬件上运行 matlab 代码,可以用 matlab coder 将代码翻译成适用于其他硬件的 C/C++源码,再编译为可在其他硬件执行的可执行文件、静态/动态链接库等,集成到项目中。所以 OP 需要的可能是这个 |
15 legendBro 220 天前 非 M 系列的 ARM 芯片能创建 ARM 架构的 macos 系统,字节内部就有,具体怎么实现的不知道。 还有 macOS12 以上系统自带虚拟化接口,UTM 这个开源免费软件可以在 m 系列实体机上创建虚拟机。 |
17 flyqie 219 天前 via Android @legendBro #15 2022 年字节的技术文章确实提到了他们在做 macos arm 虚拟化方面的工作。 但当时的文章还是在 mac mini 硬件上进行工作,三年过去了,不知道字节已经搞成什么样了,请问方便进一步分享下使用体验吗? |
18 focalfossa 201 天前 via iPhone 或许你可以试试 https://www.darlinghq.org/ 。不确定支持不支持 aarch64 就是。darling 的做法和 wine 一样,本质上是做了 macho loader ,然后翻译 Apple 的 API ,会比较干净、性能损失很小。 而且由于 macOS 的基础系统 Darwin 是开源的,darling 直接复用了 Darwin 的代码库。据我所知命令行程序一般不会有兼容性问题( darling 可以跑 Xcode cmdline tool ),GUI 程序如果是 OpenGL 写的感觉也可以跑,但是用了 AppKit 的(这个不在 Darwin 开源代码中)的目前兼容性还有很多问题。 |
19 focalfossa 201 天前 via iPhone #18 所以你需要将你的程序构建为 aarch64-apple-darwin-macosx 目标,不要依赖 Cocoa ,AppKit 等东西。然后将其放到服务器上的 darling 环境中运行。 你可以借助 LLVM 和 https://github.com/tpoechtrager/cctools-port 直接在 *nix 系统上构建 darwin/macOS 程序,无需使用 mac 电脑 |