在我的项目中,我们正在构建在x86和ARM上的Linux上运行的应用程序。不小心,我在 ARM 上运行了 x86 二进制文件,令我惊讶的是,二进制文件启动了 - 有点。它将其中一个字符串文本写入 stdout,并立即以段错误结尾。
没有显示"此二进制文件无法在此平台上运行"的有意义的消息,这是我假设会发生的事情。
从技术上讲,是否可以以某种方式设置我的编译器/链接器/任何东西,如果在错误的架构上启动,输出二进制文件根本不会运行?或者将显示一些有意义的消息?
你想要的是FatELF。
由于这并不真正受支持,您可以编写一个 shell 脚本,将可执行文件的内容放在那里(base64 编码(,并将正确体系结构的正确可执行文件写入/tmp,如果体系结构不受支持,则可能会显示错误消息。
这样,对于所有处理器架构,您将拥有适用于所有Unix/Linux/Mac平台的可执行文件,而不依赖于用户做出(错误的(决定。