Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用insmod将64位模块加载到32位内核_Linux_Linux Kernel_Kernel Module - Fatal编程技术网

Linux 使用insmod将64位模块加载到32位内核

Linux 使用insmod将64位模块加载到32位内核,linux,linux-kernel,kernel-module,Linux,Linux Kernel,Kernel Module,是否可以将在64位处理器系统中编译的.ko文件(内核对象文件)加载到32位处理器系统中 实际上,当我在系统中发出insmod命令时,我遇到以下错误: insmod: error inserting 'be2net.ko': -1 Invalid module format 不,不可能将64位模块加载到32位内核,这就是为什么会出现错误。原因是64位和32位程序具有不兼容的ABI(例如,不同的调用约定)。例如,这也是64位应用程序无法与32位库链接的原因 请注意,insmod通常会给出模糊的错误

是否可以将在64位处理器系统中编译的
.ko
文件(内核对象文件)加载到32位处理器系统中

实际上,当我在系统中发出insmod命令时,我遇到以下错误:

insmod: error inserting 'be2net.ko': -1 Invalid module format

不,不可能将64位模块加载到32位内核,这就是为什么会出现错误。原因是64位和32位程序具有不兼容的ABI(例如,不同的调用约定)。例如,这也是64位应用程序无法与32位库链接的原因


请注意,insmod通常会给出模糊的错误消息。有关更详细的消息,请查看
dmesg

的输出,在32位系统中无法运行64位代码。根据不同的需求,情况可能相反(在64位系统中运行32位软件或库),但32位体系结构无法理解64位代码。您需要在系统上编译该模块

首先从下载内核源代码。然后提取,并将cd放入

linux/drivers/net/benet
到达后,键入(作为您的常规用户)

然后

sudo insmod be2net.ko

这应该对你有用。

编译它的处理器根本不重要。编译器和编译器选项确实很重要。如果它是为64位处理器编译的,则不能在32位处理器上运行,因为它使用不同的指令集

但是,64位处理器可以运行交叉编译器并创建32位二进制文件。你不太可能这样做

sudo insmod be2net.ko