最近在编译安装软件时,一直报错,提示我
fatel error : linux/module.h: No such file or directory
查找了一下原因,是因为编译器在make时,会搜索头文件的路径/usr/include/,但是我是移植的debian系统到开发板,并且内核是自己打补丁编译的。导致/usr/include/下面没有linux/module.h相关文件。
而经过我检查发现,我的linux/module.h文件在/usr/src/linux-4.19.xx/include/linux/module.h。linux-4.19.xx是我之前手动复制过来的,编译内核Image用的kernel源文件。
网上有很多说法,我都进行了尝试,失败的方法列出如下
1、修改安装软件的Makefile,将内核源文件的目录加到make指令后面,例如 -I/usr/src/linux-4.19.xx/include。或者修改CFLAGS 。
试过这个方法,但是由于make编译时还会搜索/usr/include,导致有些源码内的文件变量命名和/usr/include下的变量名发生冲突。-------失败
2、将module.h直接复制到/usr/include/linux下。这个方法会导致一系列的变量冲突以及文件缺失。原因是:linux源码中的module.h可能是之前在pc上交叉编译的原因,并不适用于开发板上的debian根文件系统。 -------失败
3、使用sudo apt-get install 安装linux-headers,linux-source文件。这种方式只适用于linux内核比较流行,且标准的系统,例如你的pc,或者开发板维护者比较牛逼,有制作l