在我的项目中,我们正在构建应用程序以在 x86 和 ARM 上的 Linux 上运行。不小心,我在 ARM 上运行了 x86 二进制文件,令我惊讶的是二进制文件启动了——有点像。它将其中一个字符串文字写入标准输出,并立即以段错误结束。
没有显示“此二进制文件无法在此平台上运行”等有意义的消息,这是我假设会发生的事情。
在技术上是否可以设置我的编译器/链接器/任何东西,如果在错误的架构上启动,输出二进制文件将根本不会运行?或者会显示一些有意义的消息?
最佳答案
你要的是FatELF .
由于它实际上不受支持,您可以编写一个 shell 脚本,将可执行文件的内容放在那里(base64 编码),然后将正确架构的正确可执行文件写入/tmp,如果该架构不支持支持,您可以显示错误消息。
这样一来,您将拥有一个适用于所有处理器架构的所有 Unix/Linux/Mac 平台的可执行文件,而不依赖于用户做出(错误的)决定。
关于c - 如果我不小心在 ARM 上运行 x86 二进制文件,如何显示错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58399973/