yocto离线编译
1.yocto工程的搭建
2.downloads加载
3.编译命令
4.bb脚本修改
yocto工程的搭建
离线编译的前提是已经有可用的yocto工程,在无法连接网络的电脑上借助已经搭建好的yocto工程 离线搭建新的yocto工程
在使用网络搭建yocto是一般的步骤是
1.安装必要的包
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential
chrpath socat libsdl1.2-dev
$ sudo apt-get install libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils
python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev
mercurial autoconf automake groff curl lzop asciidoc
2.创建repo
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > /opt/yocto/bin/repo
$ chmod a+x /opt/yocto/bin/repo
3.repo同步
$ mkdir fsl-release-bsp
$ cd fsl-release-bsp
$ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth
$ repo sync
以上步骤完成后可 $ DISTRO= MACHINE= source fsl-setup-release.sh -b
随后即可 bitbake 编译目标 bitbake会根据目标bb文件中的SRC_URI去 fetch 目标源码 随后会在build的同级目录下创建downloads目录并将fetch到的文件存在该目录中。
因此离线搭建第一步
1.对完成repo后的 fsl-release-bsp目录打包
2.对downloads中的内容打包
解压tar包
对fsl-release-bsp tar包解压 解压后的目录结构如下
在对downloads tar包解压 解压完成后 需要修改conf文件 在编译的时候 不会从网络上fetch而是从本地的downlos获取源码
修改conf配置
运行以下命令 指定DISTRO和MACHINE 随后会生成build目录
$ DISTRO=fsl-imx-fb MACHINE=imx6ull14x14evk source imx-setup-release.sh -b build
在build目录下的 local.conf文件中进行如下配置,配置完成后不会从网络上fetch而是从本地的downlos获取源码
# 指定downloads路径
DL_DIR ?= "${BSPDIR}/downloads/"
# 指定SOURCE_MIRROR_URL路径
SOURCE_MIRROR_URL ?= "file://${DL_DIR}/"
#继承已有的mirror
INHERIT += "own-mirrors"
#禁止网络连接 只使用本地的源
BB_NO_NETWORK = "1"
问题
1.bitbake编译时会出现如下错误
根据显示信息:
nxp-demo-experience_1.0.bb文件依然会从网络上git 但是网络已经关闭 因此该bb文件解析失败
原因:该bb文件时nxp官方文件用于构建nxp的demo 因此会从网络上git最新的版本
解决: 方法1:指定该bb中的版本为downloads中的版本
方法2:删除该bb文件
2.tar.gz包
downloads的tar包很大,很多时候会上传失败(如上传svn)
解决:分开打包成 tar.gz 0 tar.gz 1 tar.gz 2 …
注意解压的时候需要下载所有的tar包后一起解压
cat xxx.tar.gz* >>xxx.tar.gz
tar -zvxf xxx.tar.gz