前言
网上关于YOCTO编译资料有很多,我在此就不必再赘述,本笔记仅供个别编译遇到的问题参考解决
编译步骤
-
根据YOCTO文档搭建系统环境:
-
设置 repo 功能
再用户目录下找个地方建立一个bin目录存放repo 可执行程序;我是在用户顶层目录下建立的bin目录
文档中使用上条命令,但是因为要**,所以出现 network is un……
可以使用国内清华的镜像:
-
为 repo 添加可执行权限
chmod +x ~/bin/repo -
添加目录路径到环境变量PATH中,这样下回打开终端时可以直接使用repo命令:
-
然后建立YOCTO工程目录, 我开发板是IMX6系列的,所以建立的名字是 fsl-release-bsp
repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth
命令仍然报错
error: command ‘git://git.freescale.com/imx/fsl-arm-yocto-bsp.git’ requires repo to be installed first.
Use “repo init” to install it here.
guop@gpvm:~/workdisk$ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [Errno 101] Network is unreachable
fatal: cloning the git-repo repository failed, will remove ‘.repo/repo’
一开始我没仔细看,以为是 github 网站需要翻墙,后来发现不是github的问题,而是 repo 的问题,repo 需要翻墙,之前的可执行程序我是翻墙下载的,但是终端没有翻墙,所以网络不可达;
因为 repo 只是一个几百行的 PYTHON 脚本,而不是完整的repo-project 包,所以需要先安装完整包才可以。
还是两种方法,终端可以翻墙,那样就可以成功进行;
第二种则是使用国内源,清华的源:
虽然我的终端可以翻墙,但是我还是使用了清华的源,不过,如上图,是定义了 REPO_URL 变量,这个变量在你下载的文件 repo 中
可以和我一样,将原来的注释掉,改为清华的源,也可以成功。
其他遇到的问题
-
运行 bitbake fsl-image-gui 后
-
User requested feature sdl configure was not able to find it.Install SDL level
这个问题我没有具体解决,GOOGLE 的方法你可以先试试,我试过了都不行,我的make 是因为编译安卓的时候将为3.82版本,所以可能有问题,我重装了make ,默认为4.1之后这个问题没有在发生,所以可能是make 的问题。
3.当你重新编译 yocto 的时候
TMPDIR has changed its layout version number and you……
这个问题是版本的问题,你按照number 后面的提示修改 tmp 目录下的 abi_version 即可。
error : dereferencing pointer ‘a’ does break strict-aliasing rules
这个问题第一次遇见,网上搜索博客讲解的还是很详细的;
我按照例程编写了测试程序:
编译的确出现问题,无论是 O3 还是O2 都会警告,但是,YOCTO把这警告视为错误;运行的结果也是不一样的,一个为1,一个为0
不加优化选项,没有警告,并且结果为 0
所以,最后需要你寻找到出错目录下的MAKEFILE,第一种方法是去掉编译选项 -O;或者第二种,在 CFLAGS 变量后面添加一句 -fno-strict-aliasing
再次编译通过。不过,你要找对MAKEFILE,修改完查看一下编译日志看是否添加成功。
(未完,待续)