2021SC@SDUSC

既然要做方舟编译器的分析,就不得不提到如何使用它。

官方源码:

https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/file?ref=master&path=doc%252FDevelopment_Preparation.md

所需系统:Ubuntu 16.04(系统推荐)

1. 首先,克隆源码到本地

在home/目录下,打开终端,切换到root角色,执行以下命令:

git clone https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler.git

2. 下载依赖库

执行以下命令:

apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc 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:i386

apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu

(如果前两个命令没有报错,则忽略以下这条命令)

apt-get -y install openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386

3.执行

pip install python-jenkins

4.下载clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04
打开以下面地址:clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-xx下载clang+llvm。如图所示。

4.下载完后,在终端,进入文件所在的位置,执行以下命令,解压文件:

tar -xvf clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz

5.将解压出来的文件,放置在方舟编译器源码目录下的这个位置:openarkcompiler/tools

并打开openarkcompiler/build/config/BUILDCONFIG.gn文件,

GN_C_COMPILERGN_CXX_COMPILERGN_AR_COMPILER三个变量配置为Clang编译器所在路径(其中${MAPLE_ROOT}为openarkcompiler源码根目录。),例如:

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"

6.下Ninja、GN
        Ninja(v1.9.0)下载地址:
        https://github.com/ninja-build/ninja/releases

下载完后,在终端,进入文件所在的位置,执行以下命令,解压文件:

tar -zxvf ninja-1.9.0.tar.gz

GN下载地址:https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn

下载完后,在终端,进入文件所在的位置,执行以下命令,让gn变成可执行文件:

chmod 777 gn

7. 配置安装Ninja、GN
        复制解压后的ninja文件和下载的gn到openarkcompiler/tools目录下。然后,从终端进入

ninja-1.9.0目录,并执行以下命令:

./configure.py --bootstrap

完成后,会生成一个ninja文件。

将GN和Ninja可执行程序放置到openarkcompiler/tools目录,打开openarkcompiler/Makefile文件,将GN和NINJA两个变量配置为GN和Ninja可执行程序所在路径。例如:

GN := ${MAPLE_ROOT}/tools/gn/gn
NINJA := ${MAPLE_ROOT}/tools/ninja-1.9.0/ninja

8. 编译源码
做完成上述步骤后,在终端,回到openarkcompiler/目录下,执行以下命令,将上述配置,导到环境变量里面去:

source build/envsetup.sh

最后,执行编译命令:

make

编译成功后,如下图所示:

接着,由终端进入openarkcompiler/out/bin/目录下,就可以看到编译出来的,用于实现编译的相关工具,这里生成的不是一个类似于IDEA或Android Studio的可视化的编译工具。如下图所示:

9. 总结
方舟编译器的安装·、配置和使用就完成了,可以用来编译代码,也能在Android上加快应用的运行,总之非常强大。

方舟编译器分析二——编译器安装与使用相关推荐

  1. ROS学习笔记(二)——python、C++编译器以及ROS的安装

    ROS学习笔记(二)--python.C++编译器以及ROS的安装 文章目录 ROS学习笔记(二)--python.C++编译器以及ROS的安装 一.编译器的安装 二.ROS的安装 三.验证: 本文主 ...

  2. Fortran编程:(二)编译器的选择及安装和使用

    一.编译器的选择 目前对于Fortran编译编译器的选择比较多,并且它们之间没有统一的规范,即在某个编译器下的代码能正常运行,但在另一个编译器下运行却会报错,没有形成一个统一的良好的Fortran编译 ...

  3. 【C 语言】Windows 下使用 gcc 编译器 ( 常用的编译器 | Qt 中的 gcc 编译器 | 独立安装 MinGW )

    文章目录 一.常用的编译器 二.使用 Qt 中的 gcc 编译器 三.独立安装 MinGW 一.常用的编译器 常用编译器 : MSVC GCC MinGW CLANG ; MSVC : 微软 Micr ...

  4. 编译原理实验报告一:PL0语言编译器分析(PL0,词法分析,语法分析,中间代码生成)

    实验报告一:PL0语言编译器分析 一.实验目的 通过阅读与解析一个实际编译器(PL/0语言编译器)的源代码, 加深对编译阶段(包括词法分析.语法分析.语义分析.中间代码生成等)和编译系统软件结构的理解 ...

  5. JVM原理(二)执行引擎篇(JVM程序执行流程、JIT编译器、JIT编译器优化)

    一.JVM程序执行流程 上一章我们介绍过程序执行通常分为解释执行和编译执行,而Java两种方式都采用了,下面是Java编译成字节码.动态编译和解释为机器码的过程分析: 编译器和解释器的协调工作流程: ...

  6. 深入理解JVM之JIT编译器(二)

    上篇是分析了一下前段编译器,主要过程完成从java代码到字节码的转变,它的改进顶多是提高程序的编码速度和效率.本篇尝试探索JIT编译器,它能够完成从字节码到本地机器码的转变,从而真正的影响程序的运行效 ...

  7. Python:Python多种集成开发环境(IDE,编译器)的简介、安装、入门、使用方法之详细攻略

    Python:Python多种集成开发环境(IDE,编译器)的简介.安装.入门.使用方法之详细攻略 目录 Python多种编译器的简介.安装.入门.使用方法 1.Anaconda 2.ipython ...

  8. Ubuntu之GCC:GCC编译器的简介、安装、使用方法之详细攻略

    Ubuntu之GCC:GCC编译器的简介.安装.使用方法之详细攻略 目录 GCC编译器的简介 GCC编译器的安装 GCC编译器的使用方法 GCC编译器的简介 gcc编译器是 Linux 下默认的 C/ ...

  9. java编译器分析_Java反编译器的剖析

    java编译器分析 简单地说,反编译器尝试将源代码转换为目标代码. 但是有很多有趣的复杂性-Java源代码是结构化的: 字节码当然不是. 而且,转换不是一对一的:两个不同的Java程序可能会产生相同的 ...

最新文章

  1. 【机器学习】一文速览机器学习的类别(Python代码)
  2. head first servlet jsp 学习笔记
  3. for循环利用可迭代对象与迭代器完成工作的本质
  4. 工科神器matlab高校遭禁用,网友:关我p事,python可取而代之
  5. ADB命令中循环执行某个命令
  6. springboot的yaml属性配置文件注入
  7. 华南x79主板设置硬盘启动_硬盘无法识别怎么办?最全的解决办法
  8. Parasoft c++test安装使用导引
  9. An invalid domain [xx] was specified for this cookie
  10. 计算机基础知识精品课程,校级精品课程《大学计算机基础》简介
  11. 入门设计原则C++实现五:依赖倒置原则
  12. iOS 联系在线客服功能
  13. 2021年五一赛A题-疫苗生产优化问题
  14. 《 C语言程序设计(第2版)》 读书笔记
  15. 信奥题库(OI题库)8月月赛T1题解 幂次数
  16. C++开源游戏推荐,reshade游戏画质增强工具
  17. 用电脑却要安装Linux系统的五个理由
  18. oracle lag、lead函数
  19. 警用宽窄带融合技术国际学术交流会成功召开
  20. mac 安装python并切换到python3版本

热门文章

  1. Windows如何通过cmd命令行启动mysql
  2. winxp文件、打印机共享故障排除方法及“操作无法完成.键入的打印机名不正确,或者指定的打印机没有连接到服务器上
  3. Delphi实现条码生成与打印实现代码
  4. 二维数组转对象+实战
  5. 微软又出大招!ChatGPT将加入云服务!
  6. NBTSTAT 命令详解
  7. PS如何最简单把彩色图片调成黑白色
  8. AIDL跨进程通信和Service调用
  9. 二造考试即将开始 这份二级造价工程师考前冲刺押题请查收
  10. 一文读懂数仓建设和数据治理