有什么办法可以在linux上将二进制文件从x86重新编译到ARM吗?

时间:2013-01-08 16:42:02

标签: linux compilation x86 arm

我想收集一些有关以下问题解决方案的想法。 我有一个TOF相机,它的驱动程序为linux x86 / 64。它工作正常。但事实上,如果可能的话,相机将用于基于ARM的嵌入式设备。

问题:

  • 我是否应该反编译驱动程序二进制文件并使用ARM编译器重新编译?有没有可用的反编译工具?
  • 是否有可用的ARM>> x86仿真器?
  • 还有其他想法吗?

ps:纯粹的来源非常昂贵,所以无论如何我都不想购买它。)

4 个答案:

答案 0 :(得分:1)

  1. AFAIK,截至今天,没有这样的反编译器可以从机器代码生成可编译的代码。您必须手动修复(通常很多修复)生成的代码。您可以查看针对Linux反编译器的this问题。
  2. 检查QEmu。只要您可以执行它,底层架构就不相关了;)
  3. 除了你所陈述的内容之外,其他内容并不多。
  4. 你正在尝试的是(部分)reverse engineering。 RE是一个复杂的过程,需要您在事物中具有丰富的知识,而您正试图逆转;在您的案例相机驱动程序。如果您对该领域有所了解,请继续。如果你不这样做,我就不会浪费我的时间(或先获取知识;)

答案 1 :(得分:0)

有关详细信息,请参阅以下答案。它列出了尝试自动执行此类转换时可能遇到的一些问题:

Convert object file to another architecture

答案 2 :(得分:0)

最近创建的Eltechs ExaGear Server,可在ARM as A Service上运行,在ARM设备上运行x86应用程序。

它是新的和专有的,但确实存在。

答案 3 :(得分:0)

如果你的驱动程序是一个内核对象,那么就没有能够在ARM内核中运行x86内核代码的模拟器(据我所知)。如果你的"驱动程序"实际上是一个在通用驱动程序(v4l2等)之上被黑客攻击的用户空间库,你可能会对这里提到的QEMU或Exagear有好运。作为旁注,您可能最终会得到一个x86应用程序软件,因为QEMU或Exagear不支持从ARM代码调用x86库。