从Linux内核模块编程指南发出make命令编译Example 2.4之后,我收到以下响应:
$ make
make -C /lib/modules/3.11.0-12-generic/build M= modules
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-12-generic'
/usr/src/linux-headers-3.11.0-12-generic/arch/x86/Makefile:107: CONFIG_X86_X32 enabled but no binutils support
make[2]: *** No rule to make target `/usr/src/linux-headers-3.11.0-12-generic/arch/x86 /syscalls/syscall_32.tbl', needed by `arch/x86/syscalls/../include/generated /uapi/asm/unistd_32.h'. Stop.
make[1]: *** [archheaders] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-12-generic'
make: *** [all] Error 2
以下是相应makefile的内容:
obj−m += hello−1.o
obj−m += hello−2.o
all:
make −C /lib/modules/$(shell uname −r)/build M=$(PWD) modules
clean:
make −C /lib/modules/$(shell uname −r)/build M=$(PWD) clean
我很感激任何帮助,因为我是关于这个主题的完整菜鸟。
编辑:重写makefile后,编译成功了一些神秘的原因。
答案 0 :(得分:0)
在你的设置中看起来像冲突,你可以做以下事情可能有效.. 1)如果您的安装是64位,则检查以下文件 vim /boot/config-3.8.0-19-generic CONFIG_X86_X32 = y然后有问题 它应该CONFIG_X86_X32 = n 和CONFIG_X86_X64 = y
2)其他选项是install使用apt-get remove binutils删除你的binutils,然后使用apt-get install binutils再次安装
答案 1 :(得分:0)
重写makefile解决了问题
答案 2 :(得分:0)
CONFIG_X86_X32 enabled but no binutils support
的常见原因是编译目录中的空格,但这显然不是您所要解决的问题。
在某些情况下,如果内核源目录属于CONFIG_X86_X32 enabled but no binutils support
,并且您以非特权用户身份运行,则我有root
。使用sudo make
进行构建可以解决此问题。