【发布时间】:2014-10-16 19:33:14
【问题描述】:
我正在为使用 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 的情况下提取 env?我想编写一个脚本来提取它,这样我的同事就不必手动执行了。 devshell 命令会打开一个完全独立的 Xterm 窗口,这会削弱它的脚本编写能力...
【问题讨论】:
标签: linux-kernel kernel-module bitbake yocto