linux cp參數




將目標文件轉換為其他體系結構 (5)

我正嘗試使用帶有Raspberry Pi的Wifi-Dongle。 加密狗的供應商提供了一個Linux驅動程序,我可以在ARM架構上成功編譯,但是,驅動程序附帶的一個目標文件已經預編譯為x86架構,導致鏈接程序失敗。

我知道再次編譯這個(相當大的)文件會容易得多,但我無法訪問源代碼。

是否有可能將該目標文件從x86架構轉換為ARM架構?

謝謝!


也許該文件只包含WiFi固件的二進制轉儲? 如果是這樣,你不需要指令翻譯,可以使用objcopy來完成轉換。

你可以使用objdump -x file.o來查看obj-file中是否有真正的可執行代碼,或者是否只有數據。


呃,不,它在我看來是浪費時間。 Wi-Fi驅動程序是複雜的,你說這個麻煩的目標文件是'大'。 很多翻譯的痛苦,成功調試的機會很少。 另外,在這個目標文件和系統其餘部分之間傳遞的任何參數都不會在x86和ARM之間直接轉換。


是的,你絕對可以做一個靜態的二進制翻譯。 x86拆卸是痛苦的,但如果這是從高層次編譯,那麼它不是那麼糟糕。

這真的值得嗎? 可以嘗試一個指令集模擬器。 你是否分析了使用的指令數量? 系統調用要求等?

到目前為止,你在反彙編上有多遠?


沒有合理的方法來做到這一點。 請聯繫製造商,詢問他們是否可以在ARM代碼中提供相關代碼,因為x86對您來說是無用的。 如果他們無法做到這一點,則必須找到不同的硬件[有ARM版本或完全開放源代碼的所有組件]的供應商,或者軟件供應商[假設有另一個來源]。


您可以通過安裝x86 GNU binutils來手動翻譯x86程序集,並使用objdump反彙編目標文件。 可能有些地址會有所不同,但應該是直截了當的。





cpu-architecture