【问题标题】:How can I extract the environment variables used when building a recipe in Yocto?如何提取在 Yocto 中构建配方时使用的环境变量?
【发布时间】: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

现在回答我的问题:

  1. 我这样做完全错了吗?交叉开发内核模块的推荐方法是什么?我这样做是因为我不想每次都打开 bitbake devshell 并在那里进行代码开发。

  2. 这种工作(我可以编译工作模块)但 make 脚本给我一个错误消息,说内核配置无效。我也尝试过将 KERNEL_PATH 设置为内核包 git 目录(build/tmp/work///git(其中包含似乎是有效的 .config 文件),我得到了类似的错误。

  3. 如何在不打开 devshell 的情况下提取 env?我想编写一个脚本来提取它,这样我的同事就不必手动执行了。 devshell 命令会打开一个完全独立的 Xterm 窗口,这会削弱它的脚本编写能力...

【问题讨论】:

    标签: linux-kernel kernel-module bitbake yocto


    【解决方案1】:

    SDK 安装程序是您正在寻找的:

    bitbake your-image -c populate_sdk
    

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

    并执行生成的shell脚本。

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

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

    只需获取 environment-setup-* 文件,进入内核目录并编译。 或者,对于基于自动工具的应用程序开发, 转到包含您的项目的文件夹(sources + Makefile.am 和 configure.ac)

    然后做:

    libtoolize --automake
    aclocal
    autoconf
    automake -a
    

    现在您的项目已准备好编译:

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

    【讨论】:

    • 是的,这似乎是我想要的,除了我找不到任何关于如何将 CMake 添加到 SDK 的文档。
    【解决方案2】:

    如果您想要快速破解,而不是 Ayman 更完整的解决方案,运行以完成每个构建阶段的脚本可以在目录中找到: ./build/tmp/work/{target_platform}/{package}/{version}/temp/run.do_{build_stage}

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      相关资源
      最近更新 更多