LKM编译过程中函数set_fs中的uaccess.h头文件错误

LKM编译过程中函数set_fs中的uaccess.h头文件错误

我试图编译我的 Linux 内核模块,并在使用 gcc 编译过程中出现以下错误:

./arch/x86/include/asm/uaccess.h: In function ‘set_fs’:
./arch/x86/include/asm/uaccess.h:32:29: error: incompatible types when assigning to type ‘mm_segment_t {aka struct <anonymous>}’ from type ‘struct mm_segment_t *’
  current->thread.addr_limit = fs;

LKM 本身没有任何问题,因为我可以insmode在另一个 Linux 系统上编译它并成功。

以下是更多信息:

LKM 中使用的头文件:asm/uaccess.h |操作系统详细信息:Linux server 4.15.0-128-generic Ubuntu

生成文件:

obj-m += LKM.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) clean

答案1

尝试确保您的架构是 x86。如果您使用#include <asm/uaccess.h>尝试将其替换为#include <linux/uaccess.h>.

相关内容