?
作者:ouxiaolong
開發(fā)環(huán)境——
主機(jī):Ubuntu18.04
開發(fā)板:飛凌嵌入式OK3568-C開發(fā)板
Windows下有很多虛擬機(jī)軟件,目前市面上流行的有VMware和VirtualBox。VMware分為收費(fèi)專業(yè)版Workstation Pro 和非商用免費(fèi)版Workstation Player,推薦使用Workstation Player。
筆者這里使用的編譯主機(jī)的Ubuntu18.04,關(guān)于Workstation和Ubuntu安裝筆者這里不在贅述,網(wǎng)上資料很多,筆者默認(rèn)已經(jīng)裝好Workstation和Ubuntu。
01依賴庫安裝
1.1更新主機(jī)的源列表
$sudo apt-get update
1.2安裝依賴工具
$sudo apt-get install repo git ssh make gcc libssl-devliblz4-toolexpect g++ patchelf chrpath gawk texinfo chrpathdIFfstatbinfmt-supportqemu-user-static live-build bison flex fakeroot cmakegcc-multilibg++-multilib unzip device-tree-compiler python-piplibncurses5-devbuild-essential vim tree
02TFTP服務(wù)環(huán)境搭建與測試
TFTP簡單文件傳輸協(xié)議,是一個(gè)基于UDP協(xié)議實(shí)現(xiàn)的用于在客戶機(jī)和服務(wù)器之間進(jìn)行簡單文件傳輸?shù)膮f(xié)議,適合于開銷不大、不復(fù)雜的應(yīng)用場合。
TFTP協(xié)議專門為小文件傳輸而設(shè)計(jì),只能從服務(wù)器上獲取文件,或者向服務(wù)器寫入文件,不能列出目錄,也不能進(jìn)行認(rèn)證。
(1)下載并安裝tftp
$sudo apt-get install openbsd-inetd
(2)新建tftp目錄和改變其屬性
$sudo mkdir /tftpboot
(3)修改/etc/inetd.conf文件
$sudo vim /etc/inetd.conf
新增如下內(nèi)容:
tftpdgram udp wait nobody /usr/sbin/tcpd/usr/sbin/in.tftpd /tftpboot
(4)啟動tftp
$sudo /etc/init.d/openbsd-inetd start
(5)本地測試
在/tftpboot/目錄下新建一個(gè)文件test,輸入內(nèi)容、保存。然后打開另外一個(gè)終端,測試文件傳輸。
–輸入命令tftp127.0.0.1
–輸入gettest
–輸入q可以退出
–退出后,使用ls命令可以發(fā)現(xiàn)當(dāng)前目錄下有test文件,如果這個(gè)文件和服務(wù)器中的test文件內(nèi)容一模一樣,表明服務(wù)器搭建成功。
?
編輯
(6)開發(fā)板測試
開發(fā)板下載測試
#tftp-g -l test -r test +IP地址
?
編輯
(注:-l后的文件是下載后文件名,可以自定義;-r后的是服務(wù)器的文件名)
03安裝配置交叉編譯工具鏈
在Linaro官網(wǎng)中有很多種GCC交叉編譯工具鏈,因?yàn)槲覀兯褂玫腞K3568開發(fā)板是一個(gè)Cortex-A55內(nèi)核64位的開發(fā)板,選擇aarch64-linux-gnu。
地址:https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/
?
編輯
圖中有很多種交叉編譯器,我們只需要關(guān)注這兩種:
針對32位系統(tǒng)的gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu.tar.xz和針對64位系統(tǒng)的gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。
大家根據(jù)自己所使用的Ubuntu系統(tǒng)類型選擇合適的版本,比如我安裝的Ubuntu14.04是64位系統(tǒng),因此我要使用gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。
04交叉編譯器安裝
將交叉編譯器拷貝Ubuntu中的/opt目錄下(沒有opt則新建該目錄),進(jìn)行如下步驟:
1. 解壓gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar
用以下命令
$sudotar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar //
必須用超級用戶模式。
2. 編輯~/.bashrc文件
$vi ~/.bashrc
在文件最后增加一行
exportPATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
保存退出。
3.運(yùn)行source~/.bashrc讓文件生效
$source ~/.bashrc
05交叉編譯器驗(yàn)證
方法一:
在命令行下輸入aarch64-l然后按tab鍵看會不會自動補(bǔ)全
方法二:
輸入:aarch64-linux-gnu-gcc-v
?
編輯
如上圖則表示配置成功!
從圖中可以看出當(dāng)前交叉編譯器的版本號為7.5.0,說明交叉編譯工具鏈安裝成功(注:編者安裝的交叉編譯器版本為7.5.0,OK3568-C開發(fā)板源碼包里是9.3.0版本)。
使用剛剛安裝的交叉編譯器的時(shí)候使用的命令是:
aarch64-linux-gnu-gcc
該命令的具體含義如下:
1.aarch64表示這是編譯aarch64架構(gòu)代碼的編譯器。AArch64是ARMv8架構(gòu)的一種執(zhí)行狀態(tài)。
2.linux表示運(yùn)行在linux環(huán)境下。
4.gcc表示是gcc工具。
最好的驗(yàn)證驗(yàn)證方法就是直接編譯一個(gè)例程,我們就編譯第一個(gè)裸機(jī)例程“hello.c”試試。
$vim hello.c
使用如下命令查看hello文件信息:
$file hello
?
編輯
從圖中可以看到hello是64位LSB的ELF格式文件,目標(biāo)機(jī)架構(gòu)為ARMaarch64,,說明我們的交叉編譯器工作正常。
最后將程序下載到開發(fā)板,修改用戶權(quán)限后即可運(yùn)行。
?
編輯
值得注意的是,在RK3568的源碼中有交叉編譯鏈,只是版本要舊些,在源碼prebuilts目錄下。筆者配置該工具鏈主要用在應(yīng)用開發(fā)。
審核編輯:湯梓紅
?
評論
查看更多