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

时间:2015-03-25 13:23:52

标签: linux kernel yocto toolchain intel-galileo

im on BSP v1.1 yocto是1.6

我试图设置交叉编译工具链来编译字符驱动程序代码 但我得到的输出是

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

  

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

     

。#包括                                            ^编译终止。

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

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

我正走在正确的轨道上吗? 有谁知道我要添加什么? 还是我完全偏离了轨道?

1 个答案:

答案 0 :(得分:2)

首先,您可以永远通过在其上运行$ {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

取自The Linux Kernel Module Programming Guide的示例(请注意,实际命令需要有缩进的制表符)。

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

手动构建内核模块:

  1. 获取SDK的environment- *文件。
  2. 转到模块目录。
  3. KERNEL_SRC = / opt / iot-devkit / 1.6.1 / sysroots / i586-poky-linux / usr / src / kernel LDFLAGS =“”make 但是,这将失败,因为无法找到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 =“”make
  8. 现在应该生成hello.ko,你应该能够在Galileo板上进行insmod。