Linux 英特尔伽利略将内核头文件添加到交叉编译工具链
BSP v1.1上的im yocto为1.6 我正在尝试设置交叉编译工具链来编译字符驱动程序代码 但我得到的结果是 [mark@localhost~]$${CC}first.c-o first first.c:1:24:致命错误:linux/init.h:没有这样的文件或目录 .#包括 ^编译终止 我认为问题在于 收割台不在工具链中 /opt/iot devkit/1.6.1/sysroot/i586-poky-linux/usr/include/linux/~ 在这个位置没有任何标记 我认为必须添加一些东西作为镜像安装或镜像功能,但我不知道是什么 我走对了吗? 有人知道我要补充什么吗?Linux 英特尔伽利略将内核头文件添加到交叉编译工具链,linux,kernel,yocto,toolchain,intel-galileo,Linux,Kernel,Yocto,Toolchain,Intel Galileo,BSP v1.1上的im yocto为1.6 我正在尝试设置交叉编译工具链来编译字符驱动程序代码 但我得到的结果是 [mark@localhost~]$${CC}first.c-o first first.c:1:24:致命错误:linux/init.h:没有这样的文件或目录 .#包括 ^编译终止 我认为问题在于 收割台不在工具链中 /opt/iot devkit/1.6.1/sysroot/i586-poky-linux/usr/include/linux/~ 在这个位置没有任何标记 我认为必
还是说我完全偏离了轨道?首先,您永远不可能只在内核模块上运行${CC}来构建它。您应该始终使用Makefile,它将其大部分工作重定向到内核源Makefil 为您的模块创建一个Makefile,由以下类似内容组成:
obj-m += hello-1.o
all:
make -C $(KERNEL_SRC M=$(PWD) modules
clean:
make -C $(KERNEL_SRC) M=$(PWD) clean
示例取自(请注意,实际命令需要有用于缩进的制表符)
然后,您必须在Makefile中或通过make调用将KERNEL_SRC定义为/opt/iot devkit/1.6.1/sysroot/i586 poky linux/usr/SRC/KERNEL/
。(使用诸如KERNEL_SRC之类的变量将确保您的模块配方在使用bitbake构建时自动选择正确的位置)
要手动构建内核模块,请执行以下操作:
现在应该会生成hello.ko,您应该能够在Galileo板上insmod。当我执行第7步时。我返回CC[M]/home/mark/GalileoDriver/hello-1.o构建模块,第2阶段。MODPOST 1 modules/bin/sh:scripts/mod/MODPOST:没有这样的文件或目录make[2]:***[\uu MODPOST]错误127 make[1]:***[modules]错误2 make[1]:离开目录
/opt/iot devkit/1.6.1/sysroots/i586 poky linux/usr/src/kernel'make:**[all]错误2
有什么建议吗?步骤5行吗scripts/mod/modpost
应该在那时创建,例如scripts/basic/fixdep
。老实说,我一直在按enter键,我会再次运行吗?我还有一个问题,如果你能帮我,尽管问。也许这应该是个新问题?另一种可能是加入Yocto项目的邮件列表。