學習嵌入式Linux開發——建立交叉編譯工具鏈並編譯內核

韋東山-Firefly RK3288配置交叉編譯環境教程
Firefly-RK3288官方的配置交叉編譯環境教程在資源下載-文檔-《RK3288開發板Linux開發手冊》2.2

概述

我是主要按照嵌入式Linux應用開發完全手冊第 2 版進行學習的。在按照開發手冊一步一步搭建開發環境的過程中還是遇到很多問題,下面我會一一講到。作爲初學者,光一個搭建開發環境編譯內核就花了我四五天的時間了,中間換了幾個虛擬機,從firefly官方教程到韋東山出的教程我都跟着嘗試了,個人感覺他們給的教程中好像有很多步驟都省略了,按教程步驟走就沒成功過,明明輸入的是一樣的指令但是我這邊總會出現各種各樣的問題,而且有很多地方都語焉不詳,着實讓人摸不着頭腦,可以說對新手極不友好了(不排除是因爲我菜)。下面就有我這條菜狗來總結一下搭建RK3288開發環境的詳細步驟,我能保證至少我能看懂(笑)。

準備

下載和自己開發板對應的BSP包:

韋東山版

韋東山開發板資料
韋東山版的源碼在升級版全系列嵌入式視頻第1季之快速入門 密碼:6FJk找到自己開發板對應的文件夾,建議將整個文件夾下載下來裏面有很多東西以後要用到。
在這裏插入圖片描述

Firefly版

Firefly-RK3288官方資料下載這裏要注意的是在firefly官網下載的sdk包要複製到Ubuntu虛擬機後再進行一次編譯得到的纔是完整源碼在這裏插入圖片描述可以直接下載韋東山給出的Firefly源碼BSP包 密碼:SVdn這裏面的Linux3288-sdk是firefly完整的源碼,解壓後:
在這裏插入圖片描述
建議下載韋東山的,下面教程使用的是韋東山的

注意

韋東山的SDK包和Firefly官方的SDK包儲存結構是不一樣的:

交叉編譯鏈 內核
韋東山 100ask_firefly-rk3288\ToolChain 100ask_firefly-rk3288\linux-4.4
Firefly linux-sdk\prebuilts linux-sdk\kernel

要用到的軟件

FileZilla

作用:虛擬機和電腦互傳文件
FileZill下載

虛擬機

Ubuntu16.04的虛擬機(我用的,其他版本不知道會是個啥情況)

安裝過程

開始安裝前重啓一下虛擬機,打開終端

安裝前置軟件包

Ubuntu 16.04 軟件包安裝:

sudo apt-get install git gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler mtools \
parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools linaro-image-tools libssl-dev \
autotools-dev libsigsegv2 m4 libdrm-dev curl sed make binutils build-essential gcc g++ bash \
patch gzip bzip2 perl tar cpio python unzip rsync file bc wget libncurses5 libglib2.0-dev openssh-client lib64stdc++6

ARM 交叉編譯工具鏈和編譯內核相關軟件包:

sudo apt-get install gcc-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev \
libssl1.0.0 libssl-dev

安裝 mkbootimg 工具

git clone https://github.com/neo-technologies/rockchip-mkbootimg.git
cd rockchip-mkbootimg
make && sudo make install

這是很多軟件包,一下裝完,後面就
如果沒有裝到後面年以內和的時候會出錯

獲取內核源碼和交叉編譯工具鏈源碼

將已經下載好的源碼通過FileZilla複製到 /home/用戶目錄,可以先解壓在複製也可以先複製在解壓。
FileZilla使用方法:先確定虛擬機的聯網方式是Net模式聯網,在虛擬機輸入指令ifconfig獲取虛擬機網絡地址inet addr在這裏插入圖片描述連接上之後左邊選中100ask_firefly-rk3288右邊選中用戶家目錄:在這裏插入圖片描述
下面的基本按照《嵌入式Linux應用開發完全手冊第 2 版》第三篇做就行了,下面大部分是直接從《嵌入式Linux應用開發完全手冊第 2 版》中複製的。

配置交叉編譯工具鏈

設置交叉編譯工具鏈

交叉編譯工具鏈主要是用於在 ubuntu 主機上編譯並聲稱可以在其它平臺上運行的系統。
設置交叉編譯工具主要是設置 PATH, ARCH 和 CROSS_COMPILE 三個環境變量,下面介紹具體設置方法一次設置永久生效:
修改用戶配置文件, Ubuntu 系統下,修改如下:

vim ~/.bashrc

在行尾添加或修改:第二行路徑根據自己的文件名修改

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihfexport PATH=$PATH:/home/用戶名/100ask_firefly-rk3288/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin

測試交叉編譯工具鏈

測試環境變量:

輸入:source ~/.bashrc
輸入:echo $ARCH
輸出:arm
輸入:echo $CROSS_COMPILE
輸出:arm-linux-gnueabihf-

測試交叉編譯器:

輸入:arm-linux-gnueabihf-gcc -v
輸出:Using built-in specs.
...
gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)

編譯內核

解壓 kernel 源碼

如果是本地上傳代碼到 Ubuntu,則進入 Kernel 目錄,解壓內核源碼:

book@100ask:~$ cd /home/book/100ask_firefly-rk3288/
book@100ask: ~/100ask_firefly-rk3288$ tar -zxvf linux-4.4.tar.gz

注意:如果你使用的是 repo 在線同步代碼,則不需要上面的解壓步驟

編譯內核

注意:需要先安裝交叉編譯工具鏈,設置環境變量。
不同的開發板對應不同的配置文件,配置文件位 linux4.4/arch/arm/configs/目錄,下

book@100ask:~/100ask_firefly-rk3288$ cd linux-4.4
book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make mrproper
book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make 100ask_firefly-rk3288_defconfig
book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make zImage
book@100ask:~/100ask_firefly-rk3288/linux-4.4$ make dtbs

編譯完成後,在 arch/arm/boot 目錄下生成 zImage 文件, 在 arch/arm/boot/dts 目錄下生成
rk3288-firefly.dtb 設備樹的二進制.dtb 文件

Firefly版

使用Firefly給出的SDK包安裝只需要將交叉編譯工具鏈的路徑改一下,最後指向bin文件夾,編譯內核的時候在kernel這個文件夾中進行編譯就行了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章