本文來源電子發(fā)燒友社區(qū),作者:ouxiaolong, 帖子地址:https://bbs.elecfans.com/jishu_2303831_1_1.html
開發(fā)環(huán)境:
主機:Ubuntu 18.04
開發(fā)板:ROC-RK3568-PC開發(fā)板
Windows 下有很多虛擬機軟件,目前市面上流行的有 VMware 和 VirtualBox。 VMware 分為收費專業(yè)版 Workstation Pro 和非商用免費版 Workstation
Player,推薦使用 Workstation Player。筆者這里使用的編譯主機的Ubuntu 18.04,關于Workstation和Ubuntu安裝筆者這里不在贅述,網(wǎng)上資料很多,筆者默認已經(jīng)裝好Workstation和Ubuntu。
1.1依賴庫安裝
1.1.1更新主機的源列表
$sudo apt-get update
1.1.2安裝依賴工具
$sudo apt-get install repo git ssh make gcc libssl-dev
liblz4-tool expect g++ patchelf chrpath gawk texinfo chrpath diffstat
binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib
g++-multilib unzip device-tree-compiler python-pip libncurses5-dev
build-essential vim tree
1.2 TFTP服務環(huán)境搭建與測試
TFTP簡單文件傳輸協(xié)議,是一個基于UDP 協(xié)議實現(xiàn)的用于在客戶機和服務器之間進行簡單文件傳輸?shù)膮f(xié)議,適合于開銷不大、不復雜的應用場合。
TFTP 協(xié)議專門為小文件傳輸而設計,只能從服務器上獲取文件,或者向服務器寫入文件,不能列出目錄,也不能進行認證。
(1)下載并安裝tftp
$sudo apt-get install openbsd-inetd
$sudo apt-get install tftpd tftp
(2)新建tftp目錄和改變其屬性
$sudo mkdir /tftpboot
$sudo chmod 777 /tftpboot
(3)修改/etc/inetd.conf文件
$sudo vim /etc/inetd.conf
新增如下內(nèi)容:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
(4)啟動tftp
$sudo /etc/init.d/openbsd-inetd start
(5)本地測試
在/tftpboot/目錄下新建一個文件test,輸入內(nèi)容,保存。然后打開另外一個終端,測試文件傳輸。
–輸入命令tftp 127.0.0.1
–輸入get test
–輸入q可以退出
–退出后,使用ls命令可以發(fā)現(xiàn)當前目錄下有test文件,如果這個文件和服務器中的test文件內(nèi)容一模一樣,表明服務器搭建成功
(6)開發(fā)板測試
開發(fā)板下載測試
#tftp -g -l test -r test +IP地址
【注】-l后的文件是下載后文件名,可以自定義;-r后的是服務器的文件名。
1.3安裝配置交叉編譯工具鏈
在Linaro 官網(wǎng)中有很多種 GCC 交叉編譯工具鏈,因為我們所使用的 RK3568開發(fā)板是一個 Cortex-A55內(nèi)核64位的開發(fā)板,選擇 aarch64-linux-gnu。
圖中有很多種交叉編譯器,我們只需要關注這兩種: gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu.tar.xz
和 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz,第一個是針對 32 位系統(tǒng)的,第二個是針對 64 位系統(tǒng)的。大家根據(jù)自己所使用的 Ubuntu 系統(tǒng)類型選擇合適的版本,比如我安裝的 Ubuntu 14.04是64位系統(tǒng),因此我要使用gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。
?交叉編譯器安裝
將交叉編譯器拷貝Ubuntu中的/opt目錄下(沒有opt則新建該目錄),進行如下步驟:
1.解壓gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar用以下命令
$sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar //必須用超級用戶模式
2.編輯~/.bashrc文件
$vi ~/.bashrc
在文件最后增加一行
export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
保存退出
3.運行 source ~/.bashrc
讓文件生效
$source ~/.bashrc
?交叉編譯器驗證
方法一:在命令行下輸入 aarch64-l 然后按tab鍵看會不會自動補全
方法二:輸入:aarch64-linux-gnu-gcc -v
表示配置成功!
從圖中可以看出當前交叉編譯器的版本號為7.5.0,說明交叉編譯工具鏈安裝成功。使用剛剛安裝的交叉編譯器的時候使用的命令是“aarch64-linux-gnu-gcc”,“aarch64-linux-gnu-gcc”的含義如下:
1.aarch64表示這是編譯 aarch64架構代碼的編譯器。AArch64是ARMv8 架構的一種執(zhí)行狀態(tài)。
2.linux 表示運行在 linux 環(huán)境下。
4.gcc 表示是 gcc 工具。
最好的驗證驗證方法就是直接編譯一個例程,我們就編譯第一個裸機例程“hello.c”試試。
$vim hello.c
#include
int main()
{
printf("Hello, ROC-RK3568-PC!n");
return 0;
}
$aarch64-linux-gnu-gcc hello.c -o hello
使用如下命令查看 hello文件信息:
$file hello
從圖中可以看到 hello是64位 LSB 的 ELF 格式文件,目標機架構為 ARMaarch64,,說明我們的交叉編譯器工作正常。
最后將程序下載到開發(fā)板,修改用戶權限后即可運行。
值得注意的是,在RK3568的源碼中有交叉編譯鏈,只是版本要舊些,在源碼prebuilts目錄下。筆者配置該工具鏈主要用在應用開發(fā)。
-
RK3568
+關注
關注
4文章
514瀏覽量
5051 -
開發(fā)板試用
+關注
關注
3文章
301瀏覽量
2100
發(fā)布評論請先 登錄
相關推薦
評論