as工程放到源码编译_方舟编译器学习笔记2 源码编译
根據(jù)方舟官方文檔編譯了方舟編譯器的源碼,在這里簡單談?wù)勂湓创a的編譯過程:
1、操作系統(tǒng)環(huán)境:
64位版本的Ubuntu(官方推薦Ubuntu 16.04)。我自己本身就有Ubuntu 16.04的虛擬機,所以直接就在上面編譯了。
2、基礎(chǔ)配置:
sudo apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-devlibc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utilsxsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-jenkins python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386sudo apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu官方推薦安裝上述庫,但是即使是在Ubuntu 16.04上,這里很多庫的版本較低。但是小版本號應(yīng)該沒什么太大的影響,我的本地環(huán)境以前編譯過別的程序,所以導致很多庫的版本都比這個推薦的要高,最終沒有影響我的編譯。所以不用太苛求其版本號。
3、源碼下載:
git clone https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler.git4、llvm和clang的下載及配置:
從LLVM Download Page 下載 LLVM8.0.0的Ubuntu 16.04 (.sig) 二進制包。解壓之后,放到OpenArkCompiler/tools目錄之下。
打開openarkcompiler/build/config/BUILDCONFIG.gn文件,將其中的GN_C_COMPILER、GN_CXX_COMPILER和GN_AR_COMPILER 三個變量配置為Clang編譯器所在路徑,例如:
GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang" GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++" GN_AR_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar"5、下載和配置Ninja、GN:
從https://github.com/ninja-build/ninja/releases 下載Ninja v1.9.0,在tools下新建目錄ninja_1.9.0,將ninja可執(zhí)行文件放到ninja_1.9.0目錄之下。
從https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn 下載GN,在tools下新建目錄gn,將gn可執(zhí)行文件放到gn目錄之下。
打開openarkcompiler/Makefile文件,將GN和NINJA兩個變量配置為GN和Ninja可執(zhí)行程序所在路徑。例如:
GN := ${MAPLE_ROOT}/tools/gn/gn NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja6、在OpenArkCompiler目錄之下依次執(zhí)行如下命令:
source build/envsetup.sh make命令說明:
- source build/envsetup.sh 初始化環(huán)境,將OpenArkCompiler工具鏈路徑openarkcompiler/src/bin設(shè)置到環(huán)境變量中
- make 編譯OpenArkCompiler的Release版本
- make BUILD_TYPE=DEBUG 編譯OpenArkCompiler的Debug版本
至此,完成方舟編譯器源碼的編譯。編譯完成之后的界面如圖所示:
編譯完成之后,在OpenArkCompiler/out目錄之下,會有如下幾個文件:
其實這幾個文件在未編譯之前,在OpenArkCompiler/src/bin目錄下就有。讀了下OpenArkCompiler目錄下的Makefile,其中java2jarjbc2mplmplcg都是直接從src/bin目錄之下copy到out/bin目錄之下的。只有maple有點特殊,它應(yīng)該是編譯生成的,然后install的時候反向copy到了src/bin目錄之下,所以編譯完成之后查看狀態(tài)(git status),會發(fā)現(xiàn)src/bin/maple發(fā)生了變化。
OpenArkCompiler/Makefile中關(guān)于install的代碼:
.PHONY: install install: mapleall$(shell cp -rf $(MAPLE_ROOT)/src/bin/java2jar $(MAPLE_ROOT)/out/bin/)$(shell cp -rf $(MAPLE_ROOT)/src/bin/jbc2mpl $(MAPLE_ROOT)/out/bin/)$(shell cp -rf $(MAPLE_ROOT)/src/bin/mplcg $(MAPLE_ROOT)/out/bin/)$(shell cp -rf $(MAPLE_ROOT)/out/bin/maple $(MAPLE_ROOT)/src/bin/)感謝: @六棵核桃樹
————
參考文檔:
1、環(huán)境配置:OpenArkCompiler
2、源碼編譯:OpenArkCompiler
總結(jié)
以上是生活随笔為你收集整理的as工程放到源码编译_方舟编译器学习笔记2 源码编译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 实数如何取整_从面试官角度
- 下一篇: Ext js call方法