2019.2.17日:最终安装成功,完美解决!

2019.2.16日:最终安装未成功,但是过程中排除 了几个bug,前进了几步,仅供参考。

写在最前面,yocto安装是有系统要求的,Deepin 15.8不在此Freescale SDK安装的官方适配范围内,楼主只是一时兴起,强行安装。

首先在VMware分配QorIQ Linux SDK v2.0 SOURCE.iso光盘镜像给虚拟机,会自动挂载在 /media/eric/yocto目录下。

打开terminal  执行:

-> /media/eric/yocto/install

-> cd /home/eric/QorIQ-SDK-V2.0-20160527-yocto

-> ./sources/meta-freescale/scripts/host-prepare.sh

->. ./fsl-setup-env -m t4240qds

期间会遇到如下库找不到的情况,执行下面的命令。

sudo apt-get install build-essential
sudo apt-get install diffstat
sudo apt-get install texinfo
sudo apt-get install git
sudo apt-get install chrpath
sudo apt-get install libsdl1.-dev

-> bitbake fsl-toolchain

编译到这里,一般会提示:

ERROR: Function failed: Fetcher failure: Fetch command failed with exit code , output:
fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead. ERROR: Logfile of failure stored in: /home/eric/QorIQ-SDK-V2.--yocto/build_t4240qds/tmp/work/x86_64-linux/gnu-config-native/+gitAUTOINC+b576fa87c1-r0/temp/log.do_unpack.
Log data follows:
| DEBUG: Executing python function do_unpack
| DEBUG: Executing python function base_do_unpack

这样的错误提示,解决方法是:

修改/home/eric/QorIQ-SDK-V2.0-20160527-yocto/sources/poky/bitbake/lib/bb/fetch2/git.py

runfetchcmd("%s branch --set-upstream %s origin/%s" % (ud.basecmd, branchname, \
branchname), d)

改成

runfetchcmd("%s branch --set-upstream-to origin/%s" % (ud.basecmd, \
branchname), d

修改之后,使用下面指令清除上次编译。

-> bitbake -c cleansstate fsl-toolchain

之后再执行

-> bitbake fsl-toolchain

还会继续遇到如下错误提示:

| help2man: can't get `--help' info from automake-1.15
| Try `--no-discard-stderr' if option outputs to stderr
| make: *** [Makefile:: doc/automake-1.15.] Error
| make: *** Waiting for unfinished jobs....
| WARNING: exit code from a shell command.
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (log file is located at /home/eric/QorIQ-SDK-V2.--yocto/build_t4240qds/tmp/work/x86_64-linux/automake-native/1.15-r0/temp/log.do_compile.)

解决方法是:修改 /home/eric/QorIQ-SDK-V2.0-20160527-yocto/build_t4240qds/tmp/work/x86_64-linux/automake-native/1.15-r0/build/makefile文件:

doc/aclocal-$(APIVERSION).: $(aclocal_script) lib/Automake/Config.pm
$(update_mans) aclocal-$(APIVERSION)
doc/automake-$(APIVERSION).: $(automake_script) lib/Automake/Config.pm
$(update_mans) automake-$(APIVERSION)

修改成

doc/aclocal-$(APIVERSION).: $(aclocal_script) lib/Automake/Config.pm
$(update_mans) aclocal-$(APIVERSION)
doc/automake-$(APIVERSION).: $(automake_script) lib/Automake/Config.pm
$(update_mans) automake-$(APIVERSION) --no-discard-stderr

之后再清理编译,再次执行

-> bitbake -c cleansstate fsl-toolchain

-> bitbake fsl-toolchain

又会遇到  如下报错

| Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at /home/eric/QorIQ-SDK-V2.--yocto/build_t4240qds/tmp/sysroots/x86_64-linux/usr/bin/automake line .
| Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at /home/eric/QorIQ-SDK-V2.--yocto/build_t4240qds/tmp/sysroots/x86_64-linux/usr/bin/automake line .
| WARNING: exit code from a shell command.
| ERROR: Function failed: do_configure (log file is located at /home/eric/QorIQ-SDK-V2.--yocto/build_t4240qds/tmp/work/x86_64-linux/libtool-native/2.4.-r0/temp/log.do_configure.)

原因是 Deepin的 perl版本较新,老的正则表达式格式不识别 ,

解决方法是:修改/home/eric/QorIQ-SDK-V2.0-20160527-yocto/build_t4240qds/tmp/sysroots/x86_64-linux/usr/bin/automake文件的:

sub substitute_ac_subst_variables
{
my ($text) = @_;
$text =~ s/\${([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/ge;
return $text;
}

改成:

sub substitute_ac_subst_variables
{
my ($text) = @_;
# $text =~ s/\${([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($)/ge;
$text =~ s/\$[{]([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($)/ge;
return $text;
}

之后,再次执行

-> bitbake -c cleansstate fsl-toolchain

-> bitbake fsl-toolchain

出现报错 :

     tmplen = strftime (tmpbuf, tmpbufsize, locale_format, &tm);
^~~~~~

之类的。

这个错误的原因应该是Deepin系统的编译器版本与yocto要求的编译器版本差别太大导致的, Deepin的GCC版本试试7.6,而freescale 官方要求的经过验证的ubuntu14.04中的gcc版本才4.8,所以怀疑GCC版本过高捣的鬼。

于是降低gcc版本。

执行

-> sudo apt-get install gcc-4.8

-> sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100

同样降低g++版本

-> sudo apt-get install g++-4.8

-> sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 100

重新执行

-> bitbake fsl-toolchain 

又出现以下报错

| Can't locate find.pl in @INC (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.2 /usr/local/share/perl/5.26.2 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at perlpath.pl line 7.
| WARNING: exit code from a shell command.
| ERROR: Function failed: do_configure (log file is located at /home/eric/QorIQ-SDK-V2.--yocto/build_t4240qds/tmp/work/x86_64-linux/openssl-native/1.0.2d-r0/temp/log.do_configure.)
ERROR: Task (virtual:native:/home/eric/QorIQ-SDK-V2.--yocto/sources/poky/meta/recipes-connectivity/openssl/openssl_1.0.2d.bb, do_configure) failed with exit code ''

估计又是perl版本搞的鬼,解决方法是拷贝一个find.pl过来

-> sudo cp /home/eric/QorIQ-SDK-V2.0-20160527-yocto/sources/poky/meta/recipes-connectivity/openssl/openssl/find.pl /etc/perl/

重新执行

-> bitbake fsl-toolchain 

之后再无报错 ,直到 编译完成 。

完美解决!

最后再插一嘴,Deepin系统用着正不错,最最符合中国人的Linux版本了,受够了ubuntu上慢腾腾的 firefox, 开着 360安全浏览器,微信,流畅的,我已经仿佛忘了我是在用VMware+Linux了。

参考了以下文章:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

https://www.cnblogs.com/zengjfgit/p/9178523.html

https://blog.csdn.net/bird_fly1024/article/details/81451662

http://www.cnblogs.com/zengjfgit/p/9178571.html

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安装多个 perl :

https://www.cnblogs.com/aaron2015/p/5132308.html   -试了,不好用

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

备    忘 :

ubuntu 14.04中各组件版本 :

perl :  This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux-gnu-thread-multi

gcc :    gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4

g++:    gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.4)

make:  GNU Make 3.81

python :   Python 2.7.6 (default, Mar 22 2014, 22:59:56)    [GCC 4.8.2] on linux2

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Deepin15.8系统下安装QorIQ Linux SDK v2.0 yocto成功完美运行的随笔的更多相关文章

  1. 原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0

    visual studio编译出现错误:错误 2 任务失败,原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0.该任务正在注册表项 HKEY_LOCAL_MAC ...

  2. Ubuntu系统下安装并配置hive-2.1.0

    说在前面的话 默认情况下,Hive元数据保存在内嵌的Derby数据库中,只能允许一个会话连接,只适合简单的测试.实际生产环境中不使用,为了支持多用户会话, 则需要一个独立的元数据库,使用MySQL作为 ...

  3. Linux系统下安装Angular2开发环境(Ubuntu16.0和deepin)

    说明下,以下过程都是在ubuntu16.0系统下,win系统环境下的安装过程更简单,基本上可以仿效此环境来,除了不用配置系统命令(win下自动可以),node安装是exe程序,一键安装.另外,这里面像 ...

  4. 在Linux系统下安装大于mysql5.5版本的数据库

    linux下mysql 5.5的安装方法: 1.安装所需要系统库相关库文件      gcc等开发包,在安装linux系统的时候安装. 2.创建mysql安装目录 # mkdir -p /usr/lo ...

  5. Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因

    原文:Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因 今天试了下在虚拟机上利用CentOS系统的yum命令安装好了httpd(apache2.4.6), ...

  6. Linux 系统下安装 rz/sz 命令及使用说明

    Linux 系统下安装 rz/sz 命令及使用说明 rz/sz命令,实现将本地的文件上传到服务器或者从服务器上下载文件到本地,但是很多Linux系统初始并没有这两个命令,以下为安装和使用的具体步骤: ...

  7. Linux 系统下安装 python-skimage

    Linux 系统下安装 python-skimage 安装必须的依赖 // python-mumpy // python-scipy // python-matplotlib $ sudo apt-g ...

  8. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

  9. Linux系统下安装Gitlab

    Linux系统下安装Gitlab 一.简介 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与 ...

随机推荐

  1. Android埋点技术分析

    1.现有的几种埋点技术的实现原理和优劣分析 (1)代码埋点:将收集数据的代码直接写在需要的地方,当用户点击某个控件或者打开某个页面时调用到该部分代码完成数据的收集. 优势:准确性高,收集数据和发送数据 ...

  2. 切片和append操作

    本文转自:http://meia.fun/article/1541470004286 学习切片时,被append这个方法困扰了半天:在main方法中把一个切片作为实参传递给另一个函数,并在这个函数内调 ...

  3. statsmodels中的summary解读(以linear regression模型为例)

    https://datatofish.com/statsmodels-linear-regression/ https://blog.datarobot.com/ordinary-least-squa ...

  4. 使用 PowerShell 创建和修改 ExpressRoute 线路的对等互连

    本文可帮助使用 PowerShell 在资源管理器部署模型中创建和管理 ExpressRoute 线路的路由配置. 还可以检查 ExpressRoute 线路的状态,更新.删除和取消预配其对等互连. ...

  5. 新一代 javascript 模板引擎:artTemplate-3.0

    特性 性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试) 支持运行时调试,可精确定位异常模板所在语句(演示) 对 NodeJS Express 友好支持 安全,默认对 ...

  6. ASP.NET Web API 跨域访问(CORS)要注意的地方

    一.客户端用JSONP请求数据 如果你想用JSONP来获得跨域的数据,WebAPI本身是不支持javascript的callback的,它返回的JSON是这样的: {"YourSignatu ...

  7. Linux学习---Linux用户审计简单版

    [root@localhost root]# vim /etc/profile # SHENJI history USER=`whoami` USER_IP=`who -u am i 2>/de ...

  8. EF CodeFirst下的自动迁移

    当我们修改数据模型,添加一个如下字段 再次运行程序,会因为数据库结构与模型不一致而报错 为解决以上错误可以采取以下三种方式 1.  删除数据库,重新运行站点,会重新生成数据库,这样就会丢失数据 2.  ...

  9. php实现session入库

    为什么要把session存入数据库?有什么用? 可以:统计在线人数,现实多站点session共享(通行证),控制同个账号登入人数等. 要实现session的入库,有关键的几个基本知识: session ...

  10. September 12th 2017 Week 37th Tuesday

    Failure is the fog through which we glimpse triumph. 失败是迷雾,穿过它,我们就可以瞥见光明. Sometimes the fog may be t ...