Deepin15.8系統下安裝QorIQ Linux SDK v2.0 yocto成功完美運行的隨筆

来源:https://www.cnblogs.com/ericmfq/archive/2019/02/17/10389242.html
-Advertisement-
Play Games

2019.2.17日:最終安裝成功,完美解決! 2019.2.16日:最終安裝未成功,但是過程中排除 了幾個bug,前進了幾步,僅供參考。 寫在最前面,yocto安裝是有系統要求的,Deepin 15.8不在此Freescale SDK安裝的官方適配範圍內,樓主只是一時興起,強行安裝。 首先在VMw ...


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.2-dev

-> bitbake fsl-toolchain

編譯到這裡,一般會提示:

ERROR: Function failed: Fetcher failure: Fetch command failed with exit code 128, 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.0-20160527-yocto/build_t4240qds/tmp/work/x86_64-linux/gnu-config-native/20150728+gitAUTOINC+b576fa87c1-r0/temp/log.do_unpack.102114
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:3687: doc/automake-1.15.1] Error 255
| make: *** Waiting for unfinished jobs....
| WARNING: exit code 1 from a shell command.
| ERROR: oe_runmake failed
| ERROR: Function failed: do_compile (log file is located at /home/eric/QorIQ-SDK-V2.0-20160527-yocto/build_t4240qds/tmp/work/x86_64-linux/automake-native/1.15-r0/temp/log.do_compile.123911)

解決方法是:修改 /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).1: $(aclocal_script) lib/Automake/Config.pm
    $(update_mans) aclocal-$(APIVERSION)
doc/automake-$(APIVERSION).1: $(automake_script) lib/Automake/Config.pm
    $(update_mans) automake-$(APIVERSION)

修改成

doc/aclocal-$(APIVERSION).1: $(aclocal_script) lib/Automake/Config.pm
    $(update_mans) aclocal-$(APIVERSION)
doc/automake-$(APIVERSION).1: $(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.0-20160527-yocto/build_t4240qds/tmp/sysroots/x86_64-linux/usr/bin/automake line 3936.
| Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at /home/eric/QorIQ-SDK-V2.0-20160527-yocto/build_t4240qds/tmp/sysroots/x86_64-linux/usr/bin/automake line 3936.
| WARNING: exit code 255 from a shell command.
| ERROR: Function failed: do_configure (log file is located at /home/eric/QorIQ-SDK-V2.0-20160527-yocto/build_t4240qds/tmp/work/x86_64-linux/libtool-native/2.4.6-r0/temp/log.do_configure.2454)

原因是 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 ($1)/ge;
  $text =~ s/\$[{]([^ \t=:+{}]+)}/substitute_ac_subst_variables_worker ($1)/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 2 from a shell command.
| ERROR: Function failed: do_configure (log file is located at /home/eric/QorIQ-SDK-V2.0-20160527-yocto/build_t4240qds/tmp/work/x86_64-linux/openssl-native/1.0.2d-r0/temp/log.do_configure.65569)
ERROR: Task 402 (virtual:native:/home/eric/QorIQ-SDK-V2.0-20160527-yocto/sources/poky/meta/recipes-connectivity/openssl/openssl_1.0.2d.bb, do_configure) failed with exit code '1'

 估計又是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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡單闡述 在C 的WinForm裡面,原生控制項是沒有居中屬性的,故通過重寫OnResize(EventArgs e)方法,通過計算,重新定位控制項位置。 以Label控制項為例 (1)將label的AutoSize屬性設置為false;Dock屬性設置為fill;TextAlign屬性設置為Middle ...
  • 出於工作需要,需要製作一個嵌入在桌面應用中的C語言編輯器,經過一系列調研,目前ScintillaNET應該是最合適的了,開源、輕便、功能豐富,但是踩得坑也很多,接下麵一一說道。 目前ScintillaNET托管在https://github.com/jacobslusser/ScintillaNET ...
  • 之前面試有問道依賴註入,因為一直是做客戶端的發開發,沒有接觸這個,後邊工作接觸到了MEF,順便熟悉一下依賴註入 詳細的概念解釋就不講了,網上一大把,個人覺著依賴註入本質是為瞭解耦,方便擴展 依賴註入的方式:屬性註入和構造函數註入,還有介面註入的,看了下跟屬性註入差不多·就不展示了 上代碼: (DI ...
  • 封裝是面向對象的基礎和重要思想之一,今天具體的瞭解封裝這一特性後發現其實自己已經接觸過很多關於封裝的內容了。 一、什麼是封裝。 封裝的概念:將具體的實現細節裝到一個容器中,封閉或隱藏起來(使用訪問修飾符private來實現),防止容器外部直接訪問內部的實現細節或更改內部成員,僅對外公開對應的介面來訪 ...
  • 從序言中,大家應該對委托和事件的重要性有點瞭解了吧,雖然說我們現在還是能模糊,但是從我的大白話系列中,我會把這些概念說的通俗易懂的。首先,我們還是先說說委托吧,從字面上理解,只要是中國人應該都知道這個意思,除非委托2個中文字不認識,舉個例子,小明委托小張去買車票。 但是在我們的程式世界里,也是這麼的 ...
  • using System;using System.Collections.Generic;using System.Text;using System.Configuration;using System.Data;using System.Data.SqlClient;namespace DAL... ...
  • C# 之 獲取文件名及拓展名 1、用Path類的方法(最常用) string fullPath = @"\WebSite\Default.aspx"; string filename = System.IO.Path.GetFileName(fullPath);//帶拓展名的文件名 “Default ...
  • 安裝前使用dotnet命令運行下看網站能不能正常運行 1、下載nssm,下載後解壓文件 下載地址:https://nssm.cc/usage 2、使用命令行工具進入到nssm的目錄: 3、執行服務安裝,運行命令,打開了程式界面 4、配置應用程式的路徑和啟動目錄及參數,點擊安裝服務 applicati ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...