【问题标题】:Is there any way to recompile binaries from x86 to ARM on linux?有没有办法在 Linux 上将二进制文件从 x86 重新编译到 ARM?
【发布时间】:2012-12-22 14:13:27
【问题描述】:

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

问题:

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

ps:纯源很贵,反正我也不想买:)

【问题讨论】:

  • 您的问题的标题可以有效地解读为“我可以在 ARM 设备上运行 x86 二进制文件吗?”答案是“不”。你可以对驱动程序进行逆向工程,就是​​这样。

标签: linux compilation x86 arm


【解决方案1】:
  1. AFAIK,到目前为止,还没有这样的反编译器可以从机器代码生成可编译的代码。您将不得不手动修复(通常是很多修复)生成的代码。你可以查看this关于 Linux 反编译器的问题。
  2. 检查QEmu。只要您可以执行底层架构,它就无关紧要;)
  3. 除了你所说的之外,没有什么。

您正在尝试的是(部分)reverse engineering。 RE 是一个复杂的过程,需要在您试图扭转的事物方面拥有丰富的知识;在您的情况下,相机驱动程序。如果您有这方面的知识,请继续。如果你不这样做,我不会在这上面浪费我的时间(或者先获取知识;))

【讨论】:

    【解决方案2】:

    详情请参阅以下答案。它列出了尝试自动执行此类翻译时可能遇到的一些问题:

    Convert object file to another architecture

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        如果您的驱动程序是内核对象,则没有模拟器(据我所知)能够在 ARM 内核中运行 x86 内核代码。如果您的“驱动程序”实际上是在通用驱动程序(v4l2 等)之上入侵的用户空间库,那么您可能会对这里提到的 QEMU 或 Exagear 感到幸运。附带说明一下,您可能最终也会使用 x86 应用程序软件,因为 QEMU 或 Exagear 开箱即用不支持从 ARM 代码调用 x86 库。

        【讨论】:

          猜你喜欢
          • 2021-03-02
          • 1970-01-01
          • 2017-02-16
          • 2014-10-15
          • 2011-01-09
          • 1970-01-01
          • 2022-11-04
          • 2012-02-16
          • 2012-04-12
          相关资源
          最近更新 更多