m4pro ,用 GCC 编译出来一个 hellworld 的程序,用 orbstack 开的 ubuntu armlinux ,里面执行这个二进制程序也能成功出来 hellworld ,反过来不行,会提示格式错误,这是什么原理
1
guanzhangzhang 18 小时 11 分钟前
加上静态编译相关参数后试试
|
2
Reficul 17 小时 46 分钟前
file 一下看看 elf 文件的目标架构
|
3
heimeil 17 小时 41 分钟前 3
https://docs.orbstack.dev/machines/#macos-executables
Similar to WSL, you can also run macOS executables (Mach-O) from Linux using binfmt_misc, which can be useful for development. |
4
nutting OP 看来这是 orbstack 提供的特性?容器里的 tomcat 提示的 JRE 也是 mac 下的,虽然运行没问题,感觉怪怪的
|
6
nutting OP @guanzhangzhang mac 下加 -static?报错了 ld: library not found for -lcrt0.o ,不是干这行的不太懂。linux 可以
|
7
licolicoli 15 小时 13 分钟前
@nutting Linux 内核支持一个叫做 binfmt_misc 的功能,能根据识别不同的二进制可执行文件,并采取不同的方式(解析器)运行。交叉编译的时候挺有用的,你可以直接用 qemu 之类的模拟器跨架构(在 x86 上跑 arm64 程序)运行可执行文件,就像原生程序一样。不过模拟器带来的损耗还是有的。
|
8
virusdefender 13 小时 40 分钟前
orbstack 自带转译,比如你 docker run --platform linux/amd64 的镜像也是可以的
|