I on BSP v1.1 yocto是1.6
我正在尝试设置交叉编译工具链来编译字符驱动程序代码,但是我得到的输出是
mark@localhost ~$ ${CC} first.c -o first
first.c:1:24:致命错误: linux/init.h:没有这样的文件或目录 .#include ^编译终止。
我认为问题是头不在工具链/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/include/linux/~中,在这个位置没有
我认为必须添加一些东西,如IMAGE_INSTALL或IMAGE_FEATURE,但我不知道是什么
我在正确的轨道上吗?有人知道我要补充什么吗?还是我完全偏离轨道了?
发布于 2015-03-26 06:41:44
首先,您不能只在内核模块上运行${CC}就可以构建内核模块。您应该始终使用Makefile,它将其大部分工作重定向到内核源Makefile。
为您创建一个Makefile模块,包含类似于:
obj-m += hello-1.o
all:
make -C $(KERNEL_SRC M=$(PWD) modules
clean:
make -C $(KERNEL_SRC) M=$(PWD) clean示例取自Linux内核模块编程指南 (注意,实际命令需要有一个制表符用于缩进)。
然后,您必须将KERNEL_SRC定义为/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/src/kernel/,无论是在Makefile中,还是在Makefile中。(使用像KERNEL_SRC这样的变量将确保您的模块配方在使用bitbake构建时自动选择正确的位置)。
要手动构建内核模块,请执行以下操作:
这现在应该会产生hello.ko,您应该能够在伽利略板上发现它。
https://stackoverflow.com/questions/29256939
复制相似问题