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 關注
- 337 瀏覽
添加回答
舉報