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>
。