繁体   English   中英

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

[英]Linux Kernel Module Programming Guide - Example 2.4

从《 Linux内核模块编程指南》发出make命令以编译示例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后,由于某种神秘的原因,编译成功。

看起来好像是在安装程序中发生冲突,您可以执行以下操作。1)如果您的安装是64位的,则检查以下文件vim /boot/config-3.8.0-19-generic CONFIG_X86_X32 = y然后出现问题它应该CONFIG_X86_X32 = n和CONFIG_X86_X64 = y

2)另一个选择是安装使用apt-get remove binutils删除binutils,然后使用apt-get install binutils再次安装

重写makefile解决了问题

CONFIG_X86_X32 enabled but no binutils support常见原因是编译目录中的空格,但这显然不是您所要解决的问题。

CONFIG_X86_X32 enabled but no binutils supportCONFIG_X86_X32 enabled but no binutils support如果内核源目录属于root并且您以非特权用户身份运行,则在某些情况下CONFIG_X86_X32 enabled but no binutils support 使用sudo make构建可以为我解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM