1. 程式人生 > >YA157C交叉編譯環境搭建

YA157C交叉編譯環境搭建

@[toc] ### 1.開發板簡介 - 開發板型號:MYD-YA157C,512MB DDR3,4GB eMMC - 主控晶片:STM32MP157AAC - 光碟資料版本:MYD-YA157C-20191225.iso ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305214128578.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70) MYD-YA157C開發套件由核心板MYC-YA157C和底板MYB-YA157C組成,主控晶片是ST目前最高配置的MPU——STM32MP157AAC3,雙核Corte-A7+Cortex-M4,主頻最高可達650Mhz。 硬體準備 - 12v電源介面卡 - USB-TTL模組:115200/8/1/無 - 網線 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305214559782.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70) 開發板和主機配置 - 開發板Linux版本:Linux 4.19.9 - 開發板IP:192.168.1.136 - 主機配置:Ubuntu 16.04 - 主機IP:192.168.1.111 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305214955466.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70) ### 2.主機搭建交叉編譯環境 所謂交叉編譯,其實是相對於本地編譯,即在一種平臺上編譯出來的程式,可以在另外一個平臺下執行,即編譯的環境和執行的環境不一樣,屬於交叉的。在進行嵌入式開發時,常常是在PC(x86架構)上使用交叉編譯工具編譯,編譯出來的可執行檔案在開發板(ARM)平臺下執行。 交叉編譯工具包,位於光碟資料的`03-Tools/Complie Toolchain`目錄下,是一個壓縮包,直接右鍵提取,或者使用tar解壓命令都可以把壓縮包解壓。解壓完成之後有以下幾個檔案: ```shell #解壓sdk tar xvf qt-sdk.tar.xz #進入sdk目錄之後可以看到以下檔案 meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.host.manifest meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.sh meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.target.manifest meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.testdata.json ``` 因為後面我們會進行Qt應用的開發,所以這裡我們選擇帶Qt圖形庫支援的交叉編譯工具包 安裝交叉編譯工具包: ```shell #切換到解壓之後的資料夾執行安裝指令碼 ./meta-toolchain-qt5-openstlinux-eglfs-stm32mp1-x86_64-toolchain-2.6-snapshot.sh #按[ENTER]鍵選擇預設的安裝配置,預設安裝在/opt目錄下 ``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305181833931.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70) 來看一下是否安裝成功了: ```shell #切換到安裝目錄 cd /opt/st/stm32mp1/2.6-snapshot/ #臨時設定環境變數 source ./environment-setup-cortexa7t2hf-neon-vfpv4-openstlinux_eglfs-linux-gnueabi #這樣會把GCC交叉編譯器臨時新增到環境變數,退出終端失效 #檢視GCC交叉編譯器版本 arm-openstlinux_eglfs-linux-gnueabi-gcc --version #或者使用$CC --version #輸出資訊 arm-openstlinux_eglfs-linux-gnueabi-gcc (GCC) 8.2.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ``` ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200305183621927.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaWsxMTk0,size_16,color_FFFFFF,t_70) 如果能輸出版本資訊,就說明安裝成功了。 ### 3.編譯第一個ARM Linux程式——Hello World 有了交叉編譯工具,和PC平臺的gcc使用方法一樣,就可以直接編譯第一個程式了。 ```shell #切換到使用者目錄 cd ~ #新建一個目錄 mkdir hello #切換到hello目錄 cd hello #新建一個C檔案 touch hello.c #輸入Hello World程式 vim hello.c ``` hello.c檔案的內容: ```c #