我正在为使用 Yocto Linux(1.3 版)的项目开发内核模块。我想使用 Yocto 项目中的内核头文件以及编译器和库,但开发内核模块而不需要每次都运行 bitbake。我最初的解决方案是执行 devshell 任务并使用以下方法提取环境变量:
bitbake mykernel -c devshell
然后在为我打开的新 xterm 窗口中 bitbake:
env | sed 's/\=\(.*\)/\="\1"/' > buildenv #put quotes around r-values in env listing
^D #(I leave the devshell)
然后将其复制到我的开发目录并在运行 make 及其所有选项之前获取它
KERNEL_PATH=/mypathto/build/tmp/sysroots/socfpga_cyclone5/usr/src/kernel
source ./buildenv && make -C $KERNEL_PATH V=1 M=`pwd` \
ARCH=arm CROSS-COMPILE=arm-linux-gnueabihf- \
KERNEL_VERSION=3.13.0-00298-g3c7cbb9 \
CC="arm-linux-gnueabihf-gcc -mno-thumb-interwork -marm" \
LD=arm-linux-gnueabihf-ld AR=arm-linux-gnueabihf-ar
现在我的问题:
我会完全错了吗?交叉开发内核模块的推荐方法是什么?我这样做是因为我不想每次都打开 bitbake devshell 并在那里进行代码开发。
这种工作(我可以编译工作模块)但是 make 脚本给了我一条错误消息,说内核配置无效。我也尝试过将 KERNEL_PATH 设置为内核包 git 目录(build/tmp/work///git(其中包含似乎是有效的 .config 文件),我得到了类似的错误。
如何在不需要打开 devshell 的情况下提取环境?我想编写一个脚本来提取它,这样我的同事就不必手动执行了。devshell 命令打开了一个完全独立的 Xterm 窗口,这反而削弱了它的可脚本性......