我正在使用Yocto Linux(1.3版)开发一个项目的内核模块。我想使用我的Yocto项目中的内核头文件和编译器以及库,但是无需每次都运行bitbake来开发内核模块。我最初的解决方案,这是为了执行开发人员专用壳层任务,并使用这样的提取环境变量:如何在Yocto中构建食谱时提取使用的环境变量?
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,并且每次都在那里做我的代码开发。
这类作品(我可以编译工作模块),但化妆剧本给我一个错误消息说核心配置是无效的。我也尝试过将KERNEL_PATH设置为内核包git目录(build/tmp/work /// git(它包含什么看起来是一个有效的.config文件),并且我得到了类似的错误。
如何在无需打开devshell的情况下提取env?我想编写一个脚本来提取它,以便我的同事不必手动执行它。devshell命令将打开一个完全独立的Xterm窗口,从而减少其可脚本化...
是的,这似乎是我想要的,除了我找不到任何关于如何将CMake添加到SDK中的文档。 – benf 2015-01-20 19:06:46