c - 如果我不小心在 ARM 上运行 x86 二进制文件,如何显示错误消息?
问题描述
在我的项目中,我们正在构建在 x86 和 ARM 上的 Linux 上运行的应用程序。意外的是,我在 ARM 上运行了 x86 二进制文件,令我惊讶的是,二进制文件启动了 - 有点。它将字符串文字之一写入标准输出并立即以段错误结束。
没有显示“这个二进制文件不能在这个平台上运行”这样的有意义的消息,这是我假设会发生的。
在技术上是否可以以某种方式设置我的编译器/链接器/任何东西,如果在错误的架构上启动,输出二进制文件根本不会运行?或者会显示一些有意义的信息?
解决方案
你想要的是FatELF。
由于这并不真正受支持,您可以编写一个 shell 脚本,将可执行文件的内容放在那里(base64 编码),然后将正确架构的正确可执行文件写入 /tmp,如果不支持该架构,您可能会显示错误消息。
这样,您将拥有一个适用于所有处理器架构的所有 Unix/Linux/Mac 平台的可执行文件,而不依赖于用户做出(错误的)决定。
推荐阅读
- sql - 为什么我不能使用这种 SQL 语法创建表?
- coq - 关于 intros [=] 和 intros [= <- H] 的问题
- vuejs3 - VUE3 - 在自定义组件中选择mounted()或created()上的元素而不使用“事件”
- c# - 检测一键和长按触摸
- javascript - Nuxt 注册用户返回无法读取未定义的属性 'then'
- jenkins - Jenkins groovy 中的关系运算符
- python - Django 模型字段内联
- html - 如何使导航栏具有粘性?
- python - 从 scipy.optimize 最小化约束的不可迭代错误
- python - 无法在 Windows-10 中使用 Docker 运行 Flask App