3 回答
TA贡献1825条经验 获得超4个赞
您的编译器应该有一个选项来指定包含的搜索路径。GnuCC(gcc,g++)和CLang(clang,clang++)都使用-I。
如果您的头文件位于/usr/src/kernels/3.19.8-100/include/linux/init.h且您调用,请说g++:
g++ -I /usr/src/kernels/3.19.8-100/include/ source.cpp
然后source.cpp可以#include <linux/init.h>。
现在,您需要学习如何通过OS生成文件向编译器提供该命令行选项以构建模块。这在很多地方都有记录,但是通常是定义一个CPPFLAGS包含附加选项的环境变量:
$ export CPPFLAGS="-I /usr/src/kernels/3.19.8-100/include/"
$ make
TA贡献1815条经验 获得超13个赞
KDIR = / usr / src / kernels / 3.19.8-100.fc20.i686 + PAE / include
我认为您的“ KDIR行”是错误的...。此Makefile有效(通常):
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
假设# dnf install kernel kernel-devel→即kernel-devel必须与完全匹配kernel。
注意:/ lib / modules / [version] / { build } /是指向的链接/usr/src/kernels/[version]/,而不是/ usr / src / kernels / [version] / include / ...的链接。该链接是在安装kernel-devel
- 3 回答
- 0 关注
- 297 浏览
添加回答
举报