我正在尝试使用Wifi-Dongle和覆盆子Pi。加密狗的供应商提供了一个Linux驱动程序,我可以在ARM体系结构上成功编译,但是,驱动程序附带的一个目标文件是为x86体系结构预编译的,这导致链接器失败。
我知道重新编译那个(相当大的)文件会容易得多,但我无法访问源代码。
是否可以将对象文件从x86体系结构转换为ARM体系结构?
谢谢!
发布于 2012-12-31 12:24:26
嗯,不,在我看来是在浪费时间。Wi-Fi驱动很复杂,你说这个麻烦的目标文件很“大”。很多痛苦需要转换,成功调试的机会微乎其微。此外,在这一个对象文件和系统的其余部分之间传递的任何参数都不会在x86和ARM之间直接转换。
发布于 2013-01-02 05:44:17
理论上是这样的。在没有访问源代码的情况下,在一个真正的内核驱动程序上做这件事将是困难的。
如果目标文件具有高质量的反汇编,并且目标文件中的代码行为良好(使用标准调用约定,没有自修改代码),则可以自动将X86指令转换为arm指令。然而,你可能没有高质量的反汇编。特别是,目标文件的某些部分可能无法正确分类为执行正常递归下降反汇编的代码或数据。如果您将数据错误地解释为代码,它将被转换为ARM代码,而不是按原样复制,因此将具有错误的值。这可能会导致代码不能正常工作。
即使您很幸运,并且可以正确地对目标文件中的所有地址进行分类,仍然有几个问题会让您陷入困境:
你最好的选择(通向成功的最快途径)是尝试对目标文件所做的事情进行逆向工程,然后直接替换它。
发布于 2012-12-31 22:19:18
没有合理的方法来做到这一点。联系制造商,询问他们是否可以提供ARM代码形式的相关代码,因为x86对您没有用处。如果他们不能做到这一点,你必须找到一个不同的供应商的硬件,具有ARM版本,或完全开放源代码,所有的组件,或软件供应商假设有其他来源。
https://stackoverflow.com/questions/14091579
复制相似问题