是否可以將在64位處理器系統中編譯的.ko
文件(內核對象文件)加載到32位處理器系統中?使用insmod將64位模塊加載到32位內核
其實我收到的時候我在我的系統發出insmod命令以下錯誤:
insmod: error inserting 'be2net.ko': -1 Invalid module format
是否可以將在64位處理器系統中編譯的.ko
文件(內核對象文件)加載到32位處理器系統中?使用insmod將64位模塊加載到32位內核
其實我收到的時候我在我的系統發出insmod命令以下錯誤:
insmod: error inserting 'be2net.ko': -1 Invalid module format
在32位系統中不能運行64位代碼。根據需要,反過來可能是真的(在64位系統中運行32位軟件或庫),但32位體系結構無法理解64位代碼。您需要在系統上編譯模塊。
首先從kernel.org下載內核源代碼。然後解壓,並且cd到
linux/drivers/net/benet
一旦出現,類型(如您的普通用戶)
make
然後
sudo insmod be2net.ko
這應該爲你工作。
不,這是不可能的加載64位模塊的32位內核,這就是爲什麼你遇到了一個錯誤。原因是64位和32位程序具有不兼容的ABI(例如不同的調用約定)。例如,這也是64位應用程序無法與32位庫鏈接的原因。
請注意,insmod通常會給出模糊的錯誤消息。有關更詳細的消息,請查看dmesg
的輸出。
編譯它的處理器根本不重要。編譯器和編譯器選項很重要。如果它是爲64位處理器編譯的,則它不能在32位處理器上運行,因爲它使用了不同的指令集。
但是,64位處理器可以運行交叉編譯器並創建32位二進制文件。這是不可能的。
我認爲這是不可能的。 –