Linux内核模块编程指南 - 示例2.4

时间:2014-03-21 20:24:32

标签: linux linux-kernel kernel-module

从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后,编译成功了一些神秘的原因。

3 个答案:

答案 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进行构建可以解决此问题。