2014-10-16 74 views
0

我正在使用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 

现在我的问题之前:

  1. 我该说这个完全错误吗?交叉开发内核模块的推荐方式是什么?我这样做是因为我不想打开一个bitbake devshell,并且每次都在那里做我的代码开发。

  2. 这类作品(我可以编译工作模块),但化妆剧本给我一个错误消息说核心配置是无效的。我也尝试过将KERNEL_PATH设置为内核包git目录(build/tmp/work /// git(它包含什么看起来是一个有效的.config文件),并且我得到了类似的错误。

  3. 如何在无需打开devshell的情况下提取env?我想编写一个脚本来提取它,以便我的同事不必手动执行它。devshell命令将打开一个完全独立的Xterm窗口,从而减少其可脚本化...

回答

2

SDK安装程序是你在找什么:

bitbake your-image -c populate_sdk 

然后,从您的build目录转到tmp/deploy/sdk

并执行生成的shell脚本。

此脚本将允许您生成并安装sdk。

不仅sdk将允许您通过提供所需的环境变量和工具来交叉编译您的内核,而且它还将提供一个sysroot +独立工具链来帮助您轻松(并且通过简单的方式,我的意思是非常简单)与自动工具crosscompile应用程序(只要你提供Makefile.am和configure.ac)

只是获取环境 - 设置 - *文件,得到了你的内核目录和编译。 或者,对于基于自动工具的应用程序开发, 转到包含您的项目的文件夹(sources + Makefile.am和configure。AC)

做:

libtoolize --automake 
aclocal 
autoconf 
automake -a 

现在你的项目准备编译:

./configure $CONFIGURE_FLAGS 
make 
make install DESTDIR=path/to/destination/dir 
+0

是的,这似乎是我想要的,除了我找不到任何关于如何将CMake添加到SDK中的文档。 – benf 2015-01-20 19:06:46

0

如果你是一个快速的黑客攻击后,反而艾曼的更完整的解决方案,脚本运行完成每个构建阶段都可以在目录中找到: ./build/tmp/work/{target_platform}/{package}/{version}/temp/run.do_{build_stage}

这些脚本可以从独立运行10目录,并包含所有需要的环境变量。

相关问题