对于嵌入式开发(驱动和应用都涉及),需要经常编译u-boot,kernel,dtb,rootfs。
编译方法,我常用的有两种:
1 部署交叉编译工具链,单独编译(构建rootfs时,复杂一点)
2 应用yocto构建,至于什么是yocto参见官网 https://www.yoctoproject.org/
以下在ubuntu os 下说明通过yocto的编译方法。
一 部署yocto :
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
ubuntu 14.04以上:
sudo apt-get install u-boot-tools
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 这个可能不成功,需要
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
可以将export PATH=~/bin:$PATH 放置到.bashrc的末尾。
git config --global user.name "Your Name"
git config --global user.email "Your Email"
git config --list
mkdir imx-yocto-bsp (目录名称随意)
cd imx-yocto-bsp
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_ga.xml 替换下面的目录:否则不不成功
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_ga.xml --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
repo sync
执行成功后:所包含内容如下
DISTRO=fsl-imx-fb MACHINE=imx6ull14x14evk source fsl-setup-release.sh -b build-fb
bitbake fsl-image-qt5-validation-imx
重开一个终端或是机器reboot后重新编译需要:
source setup-environment
----
bitbake core-image-minimal -c populate_sdk
note:上述build-fb是唯一可执行bitbake(a python script)的地方
----
1) 通过工具链编译
首先通过yocto环境编译出一个可用工具链,为了节省时间编译一个最小的文件系统
如:DISTRO=fsl-imx-fb MACHINE=mx6ull14x14evk bitbake core-image-minimal -c populate_sdk
编译成功之后会生成一个用于部署工具链的脚本,执行即可部署工具链到/opt目录下。注意,环境变量指在当前shell生效,可以添加到bashrc中。
安装toolchain:
source
获得linux sourcecode
git clone https://source.codeaurora.org/external/imx/linux-imx -b imx_4.14.98-2.0.0_ga
git checkout -b rel_imx_4.14.98-2.0.0_ga
make menuconfig
make
2)通过yocto
首先编译一个目标开发板的kernel如下:
MACHINE=<> bitbake linux-imx
创建一个用户定制层
1)部署工具链单独编译
2)通过yocto构建
类似kernel步骤
1)部署工具链单独编译(针对单独应用)
2)通过yocto构建
类似kernel步骤
DISTRO=fsl-imx-fb MACHINE=imx6ull14x14evk source fsl-setup-release.sh -b build-custom
未完待续......
这里指记录通过yocto步骤:
example:
在已部署的bsp环境下cd sources
参考meta-fsl-release/imx/meta-sdk这一层结构创建定制层。
有几点需要注意:
在编译目录下 conf中的bblayers.conf中加入meta-
加速编译步骤:几个编译目录共享cache