Ayu*_*shi 1 c linux makefile linux-device-driver linux-kernel
我有简单的代码与设备驱动程序hello world with make file.it在12.04 LTS的情况下执行得很好但最近我将我的ubuntu升级到14.04之后,相同的程序无法编译.有错误消息
make
make -C /lib/modules/3.13.0-45-generic/build M= modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-45-generic'
make[2]: *** No rule to make target `/usr/src/linux-headers-3.13.0-45-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.13.0-45-generic'
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)
提前致谢......
你的make文件不适用于其他版本的内核,因为内核库模块将在/ lib/modules/kernelversion/build中.
所以你应该使用make -C/lib/modules /"应该是当前运行的内核"/ build
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
Run Code Online (Sandbox Code Playgroud)
这将使用"shell uname -r"自动加载当前运行的内核版本.
示例makefile
KERNELDIR := /lib/modules/$(shell uname -r)/build
CLEANFILE := *.dis *.o *.ko *.mod.* *.symvers *.*.old
obj-m := hello.o
default:
make -C $(KERNELDIR) M=$(CURDIR) modules
clean:
rm -f $(CLEANFILE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |