MDC610交叉編譯

1.準(zhǔn)備工作

環(huán)境準(zhǔn)備

|

系統(tǒng)架構(gòu)

|

X86_64

|
| --- | --- |
|

操作系統(tǒng)

|

Ubuntu 18.04及以上版本

須知:

MDC平臺工具鏈僅支持Ubuntu 18.04版本箍铲。

|

獲取軟件包

|

軟件包

|

說明

|
| --- | --- |
|

MDC_SDK-{version}.tar.gz

|

MDC二次開發(fā)包,包含gcc和clang編譯器由境、編譯框架和平臺ARXML文件客扎。

|
|

MDC_SDK-{version}_llvm.tar.gz

|

用于安裝llvm編譯器珠闰。

|
|

MDC_AOS_rpmlist-{version}.tar.gz

|

用于在交叉編譯環(huán)境中安裝第三方庫咬崔。

|
|

MDC_AOS_rpmlist-{version}_llvm.tar.gz

|

用于在安裝了llvm的編譯環(huán)境中安裝第三方庫狸棍。

|
|

MDC-{version}.tar.gz

|

MDC產(chǎn)品包鉴扫,包含AP平臺包赞枕,OS鏡像,以及MCU坪创、CPLD炕婶、BIOS等固件包。

|

2.搭建交叉編譯環(huán)境

  1. 在開發(fā)環(huán)境中莱预,以普通用戶打開終端古话。

  2. 進(jìn)入SDK包(MDC_SDK-{version}.tar.gz)所在目錄,并將SDK包解壓至指定目錄锁施。

    1. 執(zhí)行命令sudo mkdir -p /usr/local陪踩,創(chuàng)建目錄“/usr/local”。

    2. 執(zhí)行命令sudo tar -xf MDC_SDK-{version}.tar.gz -C /usr/local**悉抵,將SDK安裝包解壓至“/usr/local”目錄下肩狂,解壓即安裝。

      解壓得到的“mdc_sdk”目錄說明如下:

      |

      目錄

      |

      說明

      |
      | --- | --- |
      |

      dp_gea

      |

      存在GEA系統(tǒng)環(huán)境所需交叉編譯器gcc姥饰、g++等傻谁。

      |
      |

      manifest

      |

      存在MDC平臺的ARXML文件,Sample等列粪。

      |
      |

      env_check.py

      |

      用于檢查Ubuntu审磁、cmake和make版本是否符合要求的腳本谈飒。

      |

  3. 確認(rèn)Ubuntu系統(tǒng)版本為18.04,且已安裝滿足版本要求的構(gòu)建/調(diào)試工具cmake(3.10.2及以上)和make(4.1及以上)态蒂。

    在“/usr/local/mdc_sdk”目錄下執(zhí)行校驗版本號的腳本命令./env_check.py杭措,回顯示例如下,若提示不符合版本要求钾恢,請根據(jù)要求安裝或升級至匹配版本手素。

    <pre class="screen" style="margin: 10px 0px 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace;">[INFO]cmake version is OK, the current version is 3.10.2
    [INFO]make version is OK, the current version is 4.1
    [INFO]Ubuntu version is OK, the current version is Ubuntu 18.04.6 LTS \n \l</pre>

  4. 執(zhí)行如下命令,配置環(huán)境變量瘩蚪。

    export PATH=/usr/local/mdc_sdk/dp_gea/mdc_cross_compiler/bin:$PATH

  5. 依次執(zhí)行如下命令泉懦,確認(rèn)環(huán)境變量配置正確。

    1. which aarch64-target-linux-gnu-gcc疹瘦,通過回顯確認(rèn)gcc的安裝路徑崩哩,即步驟4中的安裝路徑。

      <pre class="screen" style="margin: 10px 0px 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace;">/usr/local/mdc_sdk/dp_gea/mdc_cross_compiler/bin/aarch64-target-linux-gnu-gcc</pre>

    2. which aarch64-target-linux-gnu-g++言沐,通過回顯確認(rèn)g++的安裝路徑邓嘹,即步驟4中的安裝路徑。

      <pre class="screen" style="margin: 10px 0px 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace;">/usr/local/mdc_sdk/dp_gea/mdc_cross_compiler/bin/aarch64-target-linux-gnu-g++</pre>

3.構(gòu)建應(yīng)用

下文以編譯helloworld.c文件為例呢灶,介紹代碼的編譯和運(yùn)行步驟吴超。

  1. 編寫代碼,即編輯helloworld.c文件鸯乃。代碼示例如下:
#include <stdio.h>

int main(void)
{
        printf("Hello World!\n");
        return 0;
}

2.在開發(fā)環(huán)境中執(zhí)行命令export CC=aarch64-target-linux-gnu-gcc鲸阻,指定編譯器
3.創(chuàng)建并編寫構(gòu)建文件(Makefile)。

src_file=helloworld.c
elf_file=helloworld
all:
        ${CC} -I ${SYSROOT}/usr/include -L ${SYSROOT}/usr/lib64 ${src_file} -o ${elf_file}
  1. 編譯helloworld.c文件缨睡。

    進(jìn)入helloworld.c文件所在目錄鸟悴,依次執(zhí)行如下命令:

    1. export SYSROOT=/usr/local/mdc_sdk/dp_gea/mdc_cross_compiler/sysroot/,指定編譯目錄奖年。
    2. make细诸,開始編譯。
  2. 在“helloworld.c”文件所在目錄執(zhí)行命令ls陋守,若返回結(jié)果含有可執(zhí)行文件(helloworld)震贵,表示編譯成功。

  3. 以SSH連接方式登錄MDC系統(tǒng)環(huán)境(用戶名和密碼請參考《調(diào)測指南》的“登錄操作系統(tǒng)”章節(jié))水评,并在AOS運(yùn)行環(huán)境中運(yùn)行helloworld猩系。

總結(jié)交叉編譯腳本,可直接編譯cmake工程如下:

(1)build_mdc.sh

rm -rf ./build
mkdir build
cd ./build
cmake  -DCMAKE_SYSTEM_PROCESSOR="aarch64" \
        -DCMAKE_TOOLCHAIN_FILE=/usr/local/mdc_sdk/dp_gea/toolchain.cmake \
    ..

make -j8

(2)toolchain.cmake

get_filename_component(TOOLCHAIN_FILE_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH)

set(SCFI_SDK_TYPE dp_gea)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(SCFI_REPO ${TOOLCHAIN_FILE_PATH})

set(SCFI_MDC_SDK ${SCFI_REPO}/mdc_cross_compiler/sysroot/usr)
set(SCFI_USER_SDK ${SCFI_REPO}/user_repo)
set(SCFI_CROSS_COMPILE ${SCFI_REPO}/mdc_cross_compiler/bin)
set(SCFI_MDC_SDK_CMAKE ${SCFI_MDC_SDK}/lib/cmake)
set(SCFI_USER_SDK_CMAKE ${SCFI_USER_SDK}/lib/cmake)

file(RELATIVE_PATH SCFI_REPO_RELATIVE_MDC_CMAKE  ${SCFI_MDC_SDK_CMAKE} ${SCFI_REPO})
file(RELATIVE_PATH SCFI_REPO_RELATIVE_USER_CMAKE ${SCFI_USER_SDK_CMAKE} ${SCFI_REPO})
file(RELATIVE_PATH SCFI_MDC_RELATIVE_USER_SDK  ${SCFI_USER_SDK} ${SCFI_MDC_SDK})
file(RELATIVE_PATH SCFI_USER_RELATIVE_MDC_SDK ${SCFI_MDC_SDK} ${SCFI_USER_SDK})
set(ara-exec_DIR ${SCFI_MDC_SDK_CMAKE}/exec/)
set(CMAKE_C_COMPILER ${SCFI_CROSS_COMPILE}/aarch64-target-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${SCFI_CROSS_COMPILE}/aarch64-target-linux-gnu-g++)
set(CMAKE_FIND_ROOT_PATH ${SCFI_USER_SDK} ${SCFI_MDC_SDK} ${CMAKE_FIND_ROOT_PATH})

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末中燥,一起剝皮案震驚了整個濱河市寇甸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖拿霉,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吟秩,死亡現(xiàn)場離奇詭異,居然都是意外死亡绽淘,警方通過查閱死者的電腦和手機(jī)涵防,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來收恢,“玉大人武学,你說我怎么就攤上這事祭往÷滓猓” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵硼补,是天一觀的道長驮肉。 經(jīng)常有香客問我,道長已骇,這世上最難降的妖魔是什么离钝? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮褪储,結(jié)果婚禮上卵渴,老公的妹妹穿的比我還像新娘。我一直安慰自己鲤竹,他們只是感情好浪读,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辛藻,像睡著了一般碘橘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吱肌,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天痘拆,我揣著相機(jī)與錄音,去河邊找鬼氮墨。 笑死纺蛆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的规揪。 我是一名探鬼主播桥氏,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粒褒!你這毒婦竟也來了识颊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祥款,沒想到半個月后清笨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡刃跛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年抠艾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桨昙。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡检号,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛙酪,到底是詐尸還是另有隱情齐苛,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布桂塞,位于F島的核電站凹蜂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏阁危。R本人自食惡果不足惜玛痊,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狂打。 院中可真熱鬧擂煞,春花似錦、人聲如沸趴乡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浙宜。三九已至官辽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粟瞬,已是汗流浹背同仆。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留裙品,地道東北人俗批。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像市怎,于是被迫代替她去往敵國和親岁忘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容