如果我不小心在 ARM 上 运行 x86 二进制文件,如何显示错误消息?

How to show error message if I accidentaly run x86 binary on ARM?

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

没有显示 "This binary cannot be run on this platform" 行的任何有意义的消息,这是我假设会发生的事情。

技术上是否可以设置我的 compiler/linker/anything,如果在错误的架构上启动,输出二进制文件根本不会是 运行?或者会显示一些有意义的消息?

你要的是FatELF.

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

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