UBUNTU16 64 位编译 YOCTO IMX6工程大体步骤及问题

版权声明:本文为博主原创文章,转载请注明本博地址,谢谢! https://blog.csdn.net/u014443578/article/details/85332341

前言

网上关于YOCTO编译资料有很多,我在此就不必再赘述,本笔记仅供个别编译遇到的问题参考解决

编译步骤

  1. 根据YOCTO文档搭建系统环境:
    在这里插入图片描述

  2. 设置 repo 功能
    再用户目录下找个地方建立一个bin目录存放repo 可执行程序;我是在用户顶层目录下建立的bin目录
    在这里插入图片描述
    文档中使用上条命令,但是因为要翻墙,所以出现 network is un……
    可以终端翻墙下载,只安装SSR客户端的同学,虽然浏览器可以翻墙,但是终端仍然需要安装代理才可以终端使用HTTP协议翻墙。
    不能翻墙的,则可以使用国内清华的镜像:
    在这里插入图片描述

  3. 为 repo 添加可执行权限
    chmod +x ~/bin/repo

  4. 添加目录路径到环境变量PATH中,这样下回打开终端时可以直接使用repo命令:
    在这里插入图片描述

  5. 然后建立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 中
在这里插入图片描述
可以和我一样,将原来的注释掉,改为清华的源,也可以成功。

其他遇到的问题

  1. 运行 bitbake fsl-image-gui 后
    在这里插入图片描述
    在这里插入图片描述

    扫描二维码关注公众号,回复: 4708956 查看本文章
  2. 在这里插入图片描述
    在这里插入图片描述
    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 即可。

  1. 在这里插入图片描述
    error : dereferencing pointer ‘a’ does break strict-aliasing rules

这个问题第一次遇见,网上搜索博客讲解的还是很详细的;
在这里插入图片描述
我按照例程编写了测试程序:
在这里插入图片描述
在这里插入图片描述
编译的确出现问题,无论是 O3 还是O2 都会警告,但是,YOCTO把这警告视为错误;运行的结果也是不一样的,一个为1,一个为0
在这里插入图片描述
不加优化选项,没有警告,并且结果为 0
在这里插入图片描述
所以,最后需要你寻找到出错目录下的MAKEFILE,第一种方法是去掉编译选项 -O;或者第二种,在 CFLAGS 变量后面添加一句 -fno-strict-aliasing

再次编译通过。不过,你要找对MAKEFILE,修改完查看一下编译日志看是否添加成功。

(未完,待续)

猜你喜欢

转载自blog.csdn.net/u014443578/article/details/85332341