首页 > 解决方案 > 如果我不小心在 ARM 上运行 x86 二进制文件,如何显示错误消息?

问题描述

在我的项目中,我们正在构建在 x86 和 ARM 上的 Linux 上运行的应用程序。意外的是,我在 ARM 上运行了 x86 二进制文件,令我惊讶的是,二进制文件启动了 - 有点。它将字符串文字之一写入标准输出并立即以段错误结束。

没有显示“这个二进制文件不能在这个平台上运行”这样的有意义的消息,这是我假设会发生的。

在技​​术上是否可以以某种方式设置我的编译器/链接器/任何东西,如果在错误的架构上启动,输出二进制文件根本不会运行?或者会显示一些有意义的信息?

标签: cgccx86armportability

解决方案


你想要的是FatELF

由于这并不真正受支持,您可以编写一个 shell 脚本,将可执行文件的内容放在那里(base64 编码),然后将正确架构的正确可执行文件写入 /tmp,如果不支持该架构,您可能会显示错误消息。

这样,您将拥有一个适用于所有处理器架构的所有 Unix/Linux/Mac 平台的可执行文件,而不依赖于用户做出(错误的)决定。


推荐阅读