Linux-交叉編譯工具鏈的制作(crosstool-ng-1.24
- 前言
- 主要流程
- 開始
- 一、建立檔案夾、下載工具
- 1、 首先創建arm-linux-tool檔案夾
- 2、 打開arm-linux-tool檔案夾
- 3、 下載crosstool-ng-1.24.0到這個檔案夾,
- 4、 解壓
- 5、 在當前arm-linux-tool檔案夾下,創建三個檔案夾:
- 6、 使用sudo apt-get install下載依賴包
- 二、ct-ng 編譯make和安裝make install
- 1、進入crosstool-ng-1.24.0檔案夾
- 2、三步: 配置(**configure**)、編譯(**make**)、安裝(**make install**),
- 3、完成install 查看ct-ng是否可用
- 4、添加環境變數
- 三、ct-ng的配置,為build準備
- 1、創建(復制)一個config檔案
- 2、配置config檔案并復制到crosstool-build檔案夾
- 3、執行 打開影像化選單,確認配置
- 四、開始ct-ng build
- 五、測驗arm-某某-某某-gcc
- 1、運行arm-某某-某某-gcc
- 2、接下來我們把它添加到PATH中
- 3、測驗c語言檔案
前言
0、無論是vm還是VirtualBox虛擬機軟體都可以參考這個教程
1、我已經用vm15.5pro、ubuntu16.04完成了交叉編譯工具鏈的制作(crosstool版本1.23,博客地址:https://blog.csdn.net/qq_42112618/article/details/120792018),這次用 全新的環境 再制作一次,并且使用VirtualBox6.1.26代替vm虛擬機軟體,因為有些同學的電腦安裝Ubuntu系統無法打開甚至藍屏,我用了別的電腦也出現藍屏問題了, 很多方法都沒解決,最后使用VirtualBox6.1.26完成系統安裝,配置好之后,使用很流暢(實際上也有一些小問題),明顯比我分配了4GB記憶體的vm上的ubuntu流暢,(virtualbox安裝ubuntu的教程自行百度),
這次使用crosstool最新版本 1.24 ,
建議提前安裝好vim,因為在編輯bashrc或者config很有可能出現問題,使用vim在終端里編輯會簡單一些,
2、如果發現某些下載任務很慢或者失敗,請更換自己的網路環境或者hosts或者連接學校的vpn或者直接下載離線安裝包,本文提供ct-ng build所需的離線安裝包,這是耗時最長的一步,有離線包能快很多,而且這一步下載失敗的人有很多,
3、教程中 steve等欄位 自行替換成自己的ubuntu用戶名!!!!!
sudo apt-get install vim

主要流程
流程圖:沒慷訓,自己看目錄0.0!
更新了更新了有了有了

開始
建議全程在普通用戶權限下完成
一、建立檔案夾、下載工具
下面三句指令,注意所在檔案夾位置
我在默認位置,也就是 /home/steve下輸入的指令
1、 首先創建arm-linux-tool檔案夾
首先創建一個檔案夾,我們要把crosstool的包下載到這個檔案夾,并且在這里解壓,之后要使用到crosstool-ng-1.24.0這個檔案夾中的程式,
2、 打開arm-linux-tool檔案夾
3、 下載crosstool-ng-1.24.0到這個檔案夾,
mkdir arm-linux-tool
cd arm-linux-tool
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.24.0.tar.bz2
你最好清楚的知道這個檔案夾到底在哪里!
依次使用ctrl c 復制以上命令,在虛擬機中使用ctrl shift v黏貼到終端


4、 解壓
下載完成,接下來我們解壓剛下載的壓縮包
tar -xvjf crosstool-ng-1.24.0.tar.bz2

解壓完成,可使用ls命令查看當前檔案夾下已經有了解壓后的檔案夾

5、 在當前arm-linux-tool檔案夾下,創建三個檔案夾:
繼續,創建三個檔案夾
mkdir crosstool-build crosstool-install src

6、 使用sudo apt-get install下載依賴包
然后安裝這些包
sudo apt-get install gperf flex bison texinfo gawk libtool automake libncurses5-dev g++ help2man
一般會一次下載成功或著有一兩個安裝失敗,我這就比較慘了,沒有一個下載了的,可能是因為我安裝ubuntu的時候沒勾選安裝軟體,(后來我又新建了一個Ubuntu虛擬機,安裝ubuntu的時候選擇了下載更新,就沒有出現下面的問題,一次apt-get成功,下面圖片中的問題也給出了相應的解決辦法)

依次執行以下指令,解決了問題,更換了apt源為騰訊鏡像
如果沒有上面的問題就跳過!
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
sudo wget -O /etc/apt/sources.list http://mirrors.cloud.tencent.com/repo/ubuntu20_sources.list
sudo apt-get update
sudo apt-get install gperf flex bison texinfo gawk libtool automake libncurses5-dev g++ help2man
sudo apt-get -f install
sudo apt-get install gperf flex bison texinfo gawk libtool automake libncurses5-dev g++ help2man

二、ct-ng 編譯make和安裝make install
1、進入crosstool-ng-1.24.0檔案夾
準備就緒,接下來進入crosstool-ng-1.24.0檔案夾
cd crosstool-ng-1.24.0
2、三步: 配置(configure)、編譯(make)、安裝(make install),
接下來要make了,生成的ct-ng檔案會在下面的地址,注意下面的地址steve替換成自定義的欄位,
./configure --prefix的作用是:編譯的時候用來 **指定程式存放路徑 **
./configure --prefix /home/steve/arm-linux-tool/crosstool-install/
出現以下問題 要求的工具:libtool沒有找到,很多同學也出現過這種問題,我們來解決一下,
下面三句1、確認libtool已經安裝,2、安裝libtool-bin,3、再次運行configure,
sudo apt-get install libtool
sudo apt-get install libtool-bin
./configure --prefix /home/steve/arm-linux-tool/crosstool-install/
如下圖所示,已經解決,
編譯
make
安裝
make install
安裝完成

3、完成install 查看ct-ng是否可用
然后進入安裝目錄執行ct-ng
cd /home/steve/arm-linux-tool/crosstool-install/bin

在檔案夾里我們也能看到它
4、添加環境變數
我們添加一下ct-ng的檔案夾路徑到PATH中,方便我們之后呼叫
export PATH=$PATH:/home/steve/arm-linux-tool/crosstool-install/bin/

指令說明:export PATH=你要添加的地址:$PATH
#配置完后可以通過echo $PATH查看配置結果,
#生效方法:立即生效
#有效期限:臨時改變,只能在當前的終端視窗中有效,當前視窗關閉后就會恢#復原有的path配置
#用戶局限:僅對當前用戶
也就是如果你下次打開終端視窗這個path就失效了
如果你會用vim修改,建議用vi ~/.bashrc在最下面添加PATH(如果path是空的就別用這個方法,就先用臨時變數把),然后保存退出,使用source ~/.bashrc使其生效,這里不介紹這個方法了,我們接下來復制config檔案,準備build
臨時環境變數添加后,ct-ng可以在別的檔案路徑也能使用了

三、ct-ng的配置,為build準備
(這一步每個人可能要不一樣的配置,不一定要照著做,這一步完成不了ct-ng build的話,就直接參考config文本編輯覆寫)
1、創建(復制)一個config檔案
先來看一下crosstool-ng-1.23.0檔案夾里有啥
里面有一些樣例
cd /home/steve/arm-linux-tool/crosstool-ng-1.23.0/samples
我們可以從這里樣例中復制config檔案
然后在menuconfig圖形化選單中配置 目標路徑、目標cpu、目標檔案名等
ct-ng menuconfig是必須要有這一步的,就算是直接復制好正確的config也得執行一下ct-ng menuconfig并保存,已確保沒有少某些檔案
碼云地址:https://gitee.com/steveqobs/linux

我已經把正確配置的config檔案上傳至我的公開倉庫中,build需要的包也在里面,可以在ubuntu中使用git clone直接下載到本地,如果不會git 可以參考https://blog.csdn.net/qq_42112618/article/details/120864188
就下面這一句,把 .config 和所有 ct-ng build 需要的包下載ok了
git clone https://gitee.com/steveqobs/linux
2、配置config檔案并復制到crosstool-build檔案夾
注意:.config檔案是隱藏檔案,需要用ls -a 才能看到,
可使用vi .config進行編輯,也可以在windows編輯好了在復制到ubuntu中
復制到/home/用戶名/arm-linux-tool/crosstool-build/
以下標注了關鍵配置
local tarballs directory: 下載的包會在這個路徑
prefix directory: 最后要使用的程式會在這個檔案夾里
(如果你沒安裝vim就會是下面這樣純白的文字)
vi /home/steve/

這里自定義成自己的名字、廠商名等
還有cpu、linux內核版本等、這里不再描述,根據自己的情況修改,
復制到crosstool-build檔案夾
我是git克隆到本地檔案夾了,然后把編輯好的config復制到crosstool-build檔案夾中:
(兩個檔案路徑中間有空格)
cp /home/steve/linux/.config /home/steve/arm-linux-tool/crosstool-build/.config

3、執行 打開影像化選單,確認配置
ct-ng menuconfig
方向鍵上下選擇配置項,左右選擇功能鍵
確認完畢后 save 了再exit

其他配置比如cpu型號 linux內核 自行研究

退出影像化選單
四、開始ct-ng build
ct-ng build
很可能會遇到錯誤,可能因為網路、可能因為本來就沒有這個包
下面的意思是isl包 下載失敗
之前git 下載的包就派上用途了 直接全選復制到src
/home/steve/arm-linux-tool/src


發現這次build和之前需要的包不一樣了,最容易出錯的isl, 之前是0.16版本這次0.20版本,沒下載成功,然后我去http://mirror.sobukus.de/files/src/isl/
找到了對應版本,拖進了ubuntu
再次執行ct-ng build
應該沒毛病了 等一小時吧
耗時43分鐘,還行,之前最久build的一次是69分鐘

到這一步之后,我開始找要執行的檔案在哪,發現同樣的配置,1.24和1.23生成的名字不一樣了

注意在這個檔案夾/home/steve/x-tools/arm-syqCortexA9-eabi/bin
五、測驗arm-某某-某某-gcc
我們先到上面這個檔案夾試一下能不能用,注意加個 ./
1、運行arm-某某-某某-gcc
./arm-某某-某某-gcc --version
如果在PATH中添加了arm-某某-eabi-gcc所在檔案夾路徑,那么在別的路徑下只執行arm-某某-eabi-gcc也能成功

2、接下來我們把它添加到PATH中
vi ~/.bashrc
翻到最下面 按 i 進入編輯模式
如果你的PATH是空的那你要小心,得把他們全加上,不然你的所有命令都無法使用,到時候還得添加臨時環境變數
PATH=/home/steve/bin:/home/steve/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/steve/arm-linux-tool/crosstool-install/bin/:/home/steve/x-tools/arm-syqCortexA9-eabi/bin

生效
source ~/.bashrc
3、測驗c語言檔案
隨便找個檔案夾新建一個c語言檔案試試

右鍵單擊gedit打開輸入
#include<stdio.h>
int main (void)
{
printf("!!! hello !!!");
return 0;
}

保存并關閉
arm-某某-某某-gcc hello.c -o hello
查看生成的檔案資訊
file hello
生成的是hello

本來應該在開發板上面執行的,gcc編譯的檔案可以執行

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/328239.html
標籤:其他
上一篇:FineBI 帆軟連接 MySQL 以及顯示亂碼的解決方法
下一篇:計算機發展史26-30
