華為方舟編譯器編譯工具正式發(fā)布
2019 華為全球開發(fā)者大會將在 8 月 9 日-11 日在華為松山湖基地召開。本次開發(fā)者大會邀請了 1500 位合作伙伴、5000 名全球開發(fā)者,將是華為歷來規(guī)模最大的一次會議。在這次大會上,華為方舟編譯器也是關(guān)注的熱點。
現(xiàn)在根據(jù)華為開發(fā)者官網(wǎng)最新消息,編譯工具方舟編譯器已經(jīng)對外發(fā)布。據(jù)介紹,方舟編譯器是基于 GCC 開發(fā)的交叉編譯器套件,它包括了C、C++、Fortran 的前端,也包括了這些語言的庫(如 libstdc++、libgcc 等)。HCC 運行在 X86 linux 架構(gòu)服務(wù)器上,生成的二進(jìn)制運行在 Aarch64 架構(gòu)服務(wù)器上。
1. 安裝前準(zhǔn)備
1) 環(huán)境要求
方舟編譯器支持如下 64 位操作系統(tǒng)。
SUSE12sp4 及以上版本。
ubuntu16.04 及以上版本。
其他 glibc 版本在 2.22 及以上的 Linux 發(fā)行版。
2) 獲取軟件包
安裝方舟編譯器需要獲取如表2-1 所示的開源軟件包。
表2-1 開源軟件包
軟件包名稱 | 軟件包說明 | 獲取路徑 |
GCC 7.3.0 | 編譯器源碼包 | https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz |
Binutils 2.31.1 | 匯編器、鏈接器等二進(jìn)制工具集源碼包 | https://ftp.gnu.org/gnu/binutils/binutils-2.31.1.tar.gz |
Glibc 2.29 | GNU libc 庫源碼包 | https://git.linaro.org/toolchain/glibc.git/snapshot/glibc-2.29.tar.gz |
Mpc 1.1.0 | 復(fù)數(shù)運算庫 | https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz |
GNU MPFR 4.0.2 | 多精度浮點計算庫 | https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.gz |
isl 0.21 | 集和線性約束范圍內(nèi)整數(shù)點關(guān)系的操作庫 | http://isl.gforge.inria.fr/isl-0.21.tar.gz |
2. 安裝 HCC 編譯器
1) 操作步驟
您可以使用 HCC tar 包將 HCC 安裝到當(dāng)前用戶權(quán)限下的任何位置,而不會影響其他編譯器的使用。
a) 介紹操作入口,例如用 XX 帳號登錄 XX 環(huán)境。
b) 登陸 HCC 下載地址下載壓縮包
hcc_arm64le.tar.gz
c) 將 tar 包拷貝至您想要安裝的目錄。
命令腳本如下所示。
cp hcc_arm64le.tar.gz /path/to/your/dir
d) 解壓縮軟件包。
命令腳本如下所示。
tar zxvf hcc_arm64le.tar.gz
e) 設(shè)置環(huán)境變量。
設(shè)置環(huán)境變量命令腳本如下所示。
export PATH=/path/to/your/dir/hcc_arm64le/bin:$PATH
HCC 編譯器提供的編譯工具在=/path/to/your/dir/hcc_arm64le/bin 目錄下。
2) 安裝后檢查
HCC 編譯器安裝完成后,可以執(zhí)行 aarch64-linux-gnu-gcc -v 命令查詢 HCC 版本。
軟件下載
源碼下載:立即下載
據(jù)華為官方方面介紹,方舟編譯器是首家完全替代語言虛擬機(jī)的靜態(tài)編譯器,完全不需要解釋器。兼顧 Java 開發(fā)效率和C語言運行效率的編譯器。相比現(xiàn)有的編譯機(jī)制:
1. 方舟編譯器是一種靜態(tài)的編譯方式,而現(xiàn)有的安卓系統(tǒng),運行一個應(yīng)用程序首先啟動虛擬機(jī),然后讀入應(yīng)用程序代碼,逐條解釋執(zhí)行。會占用較多的處理資源,影響程序執(zhí)行的效率。當(dāng)然,也有包括 AOT 或 JIT 等提前或運行時的編譯技術(shù),把部分程序轉(zhuǎn)換成機(jī)器碼直接在 CPU 上執(zhí)行。但是,仍舊無法做到 100% 做到擺脫虛擬機(jī)的執(zhí)行,這也是當(dāng)前安卓陣營不如 IOS 陣營的關(guān)鍵。
2. 華為方舟編譯器的靜態(tài)編譯方式可將語言里的動態(tài)特性直接翻譯成機(jī)器碼,手機(jī)安裝應(yīng)用程序后可全速運行程序,徹底消除虛擬機(jī)的弊病,帶來效率上的極大提升。
3. 方舟編譯器是在開發(fā)環(huán)境部署的編譯器,而現(xiàn)有編譯過程,主要發(fā)生在手機(jī)上,帶來額外的資源消耗。
目前方舟編譯器針對通用 ARM 芯片架構(gòu)進(jìn)行編譯優(yōu)化,未來將通過軟硬件協(xié)同設(shè)計,將麒麟芯片的能力發(fā)揮到極致。同時方舟編譯器支持 Java 標(biāo)準(zhǔn)用法,三方應(yīng)用可直接進(jìn)行編譯,不需要修改代碼。但如果希望獲得更加好的性能或內(nèi)存方面的提升,則可以通過調(diào)整代碼結(jié)構(gòu),與方舟編譯器配合優(yōu)化來實現(xiàn)。