Intel Galileo将内核头文件添加到交叉编译工具链中



im on BSP v1.1yocto是1.6

我正在尝试建立交叉编译工具链来编译字符驱动程序代码但是我得到的输出是

[mark@localhost~]$${CC}优先.c-o优先

first.c:1:24:致命错误:linux/init.h:没有这样的文件或目录

#包括^编译终止。

我认为问题在于收割台不在工具链中/opt/ot-devkit/1.6.1/sysroots/i586-poky-linux/usr/include/linux/~这个位置没有

我认为必须添加一些东西作为IMAGE_INSTALL或IMAGE_FEATURE,但我不知道是什么

我走对了吗?有人知道我要补充什么吗?还是我完全偏离了轨道?

首先,您可以通过在内核模块上运行${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

示例取自《Linux内核模块编程指南》(注意,实际命令需要有一个用于缩进的制表符)。

然后,您必须在Makefile中或从您的make调用中将KERNEL_SRC定义为/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/src/kernel/。(使用KERNEL_SRC这样的变量可以确保在使用bitbake构建时,模块配方会自动选择正确的位置)。

手动构建内核模块:

  1. 为您的SDK获取环境-*文件
  2. 转到模块目录
  3. KERNEL_SRC=/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/SRC/KERNEL LDFLAGS="制造但是,这将失败,因为找不到fixdep。我们将手动修复此问题
  4. cd/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/src/kernel
  5. 制作silentoldconfig脚本
  6. 返回模块目录
  7. KERNEL_SRC=/opt/iot-devkit/1.6.1/sysroots/i586-poky-linux/usr/SRC/KERNEL LDFLAGS="制造

这应该会产生hello.ko,你应该能够在伽利略板上进行insmod。

相关内容

  • 没有找到相关文章

最新更新