方舟,渡人先渡己:OpenArkCompiler源码编译

0
Want create site? Find Free WordPress Themes and plugins.

这半年,华为技术有限公司(Huawei Technologies Co., Ltd.)站在了全中国乃至世界的风口浪尖。个中原因,我们在此不作讨论。

2019年8月9日,HDC(华为开发者大会)发布操作系统Harmony OS
同日,人民日报发表人民锐评《鸿蒙一开天地宽,中华有为!》
2019年8月31日,方舟编译器上线,并迅速成为码云(Gitee)最快达成5000 Star的开源项目
2019年11月21日,华为方舟编译器获“2019东北亚优秀开源项目”奖

Huawei官方对于方舟编译器(OpenArkCompiler)的定义是:

The OpenArkCompiler is a unified programming platform designed to support the joint compilation and operation for mutiple programming languages and multiple chip platforms, including key components such as compilers, tool chains, and runtimes. Initially contributed by HUAWEI.

Reference: https://github.com/OpenArkCompiler/openarkcompiler

并且有如下特性:

能够将不同语言代码编译成一套可执行文件,在运行环境中高效执行:

  • 支持多语言联合优化、消除跨语言调用开销;
  • 更轻量的语言运行时;
  • 软硬协同充分发挥硬件能效;
  • 支持多样化的终端设备平台;

Reference: https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/readme

所以对于如此一项划时代的优秀科研成果,我们须加以认真研究学习。这里对其源码编译作一些简单介绍。
官方推荐使用Ubuntu 16.04 x64作为编译环境。时间所限,笔者直接在自己的笔记本上进行演示,系统为Manjaro 18.1,内核版本为5.4.12
官方文档推荐安装如下库:

笔者的编译环境中,绝大多数库版本比官方推荐的要高,不过实测下来并没有太大影响。
另请注意,编译Clang/LLVM要求的库有如下:
build-essential / gcc / g++ / cmake / swig / python-swigpk / libxml2 / libncurse / libedit / libpython / z3
首先下载OpenArkCompiler的源码:

编译OpenArkCompiler需要使用Clang/LLVM8,在https://releases.llvm.org/download.html可以获取到LLVM8的相关源码。请下载除Test Suite的全部内容。
可将以下内容存入links.txt,然后使用wget -b -i links.txt批量下载。

解压LLVM主程序源码,然后创建子目录以存放LLVM子项目源码:

编译Clang/LLVM(假定当前路径仍在llvm-8.0.0.src

下载Ninja、GN的可执行程序并将其置于对应目录:

打开OpenArkCompiler/build/config/BUILDCONFIG.gn,定位到# Toolchain setup下,修改为

Makefile中Ninja、gn的路径不用修改,因为我们先前操作时就已与其默认路径一致。
最后开始编译。执行命令(默认输出路径 OpenArkCompiler/out/bin):

编译结果见下图:
Screenshot.png
命令说明(来自官方文档)

  • source build/envsetup.sh 初始化环境,将OpenArkCompiler工具链路径openarkcompiler/src/bin设置到环境变量中
  • make 编译OpenArkCompiler的Release版本
  • make BUILD_TYPE=DEBUG 编译OpenArkCompiler的Debug版本

至此,方舟编译器OpenArkCompiler便已编译完毕。按照计划(亦即笔者不是鸽子的情况下)将在后续的文章中对OpenArkCompiler进行更深入的探讨。我们下期再见~

Did you find apk for android? You can find new Free Android Games and apps.

关于作者

无用挂件

https://raspii.tech/

发表评论