方舟编译器分析二——编译器安装与使用
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_COMPILER、GN_CXX_COMPILER和GN_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上加快应用的运行,总之非常强大。
方舟编译器分析二——编译器安装与使用相关推荐
- ROS学习笔记(二)——python、C++编译器以及ROS的安装
ROS学习笔记(二)--python.C++编译器以及ROS的安装 文章目录 ROS学习笔记(二)--python.C++编译器以及ROS的安装 一.编译器的安装 二.ROS的安装 三.验证: 本文主 ...
- Fortran编程:(二)编译器的选择及安装和使用
一.编译器的选择 目前对于Fortran编译编译器的选择比较多,并且它们之间没有统一的规范,即在某个编译器下的代码能正常运行,但在另一个编译器下运行却会报错,没有形成一个统一的良好的Fortran编译 ...
- 【C 语言】Windows 下使用 gcc 编译器 ( 常用的编译器 | Qt 中的 gcc 编译器 | 独立安装 MinGW )
文章目录 一.常用的编译器 二.使用 Qt 中的 gcc 编译器 三.独立安装 MinGW 一.常用的编译器 常用编译器 : MSVC GCC MinGW CLANG ; MSVC : 微软 Micr ...
- 编译原理实验报告一:PL0语言编译器分析(PL0,词法分析,语法分析,中间代码生成)
实验报告一:PL0语言编译器分析 一.实验目的 通过阅读与解析一个实际编译器(PL/0语言编译器)的源代码, 加深对编译阶段(包括词法分析.语法分析.语义分析.中间代码生成等)和编译系统软件结构的理解 ...
- JVM原理(二)执行引擎篇(JVM程序执行流程、JIT编译器、JIT编译器优化)
一.JVM程序执行流程 上一章我们介绍过程序执行通常分为解释执行和编译执行,而Java两种方式都采用了,下面是Java编译成字节码.动态编译和解释为机器码的过程分析: 编译器和解释器的协调工作流程: ...
- 深入理解JVM之JIT编译器(二)
上篇是分析了一下前段编译器,主要过程完成从java代码到字节码的转变,它的改进顶多是提高程序的编码速度和效率.本篇尝试探索JIT编译器,它能够完成从字节码到本地机器码的转变,从而真正的影响程序的运行效 ...
- Python:Python多种集成开发环境(IDE,编译器)的简介、安装、入门、使用方法之详细攻略
Python:Python多种集成开发环境(IDE,编译器)的简介.安装.入门.使用方法之详细攻略 目录 Python多种编译器的简介.安装.入门.使用方法 1.Anaconda 2.ipython ...
- Ubuntu之GCC:GCC编译器的简介、安装、使用方法之详细攻略
Ubuntu之GCC:GCC编译器的简介.安装.使用方法之详细攻略 目录 GCC编译器的简介 GCC编译器的安装 GCC编译器的使用方法 GCC编译器的简介 gcc编译器是 Linux 下默认的 C/ ...
- java编译器分析_Java反编译器的剖析
java编译器分析 简单地说,反编译器尝试将源代码转换为目标代码. 但是有很多有趣的复杂性-Java源代码是结构化的: 字节码当然不是. 而且,转换不是一对一的:两个不同的Java程序可能会产生相同的 ...
最新文章
- 【机器学习】一文速览机器学习的类别(Python代码)
- head first servlet jsp 学习笔记
- for循环利用可迭代对象与迭代器完成工作的本质
- 工科神器matlab高校遭禁用,网友:关我p事,python可取而代之
- ADB命令中循环执行某个命令
- springboot的yaml属性配置文件注入
- 华南x79主板设置硬盘启动_硬盘无法识别怎么办?最全的解决办法
- Parasoft c++test安装使用导引
- An invalid domain [xx] was specified for this cookie
- 计算机基础知识精品课程,校级精品课程《大学计算机基础》简介
- 入门设计原则C++实现五:依赖倒置原则
- iOS 联系在线客服功能
- 2021年五一赛A题-疫苗生产优化问题
- 《 C语言程序设计(第2版)》 读书笔记
- 信奥题库(OI题库)8月月赛T1题解 幂次数
- C++开源游戏推荐,reshade游戏画质增强工具
- 用电脑却要安装Linux系统的五个理由
- oracle lag、lead函数
- 警用宽窄带融合技术国际学术交流会成功召开
- mac 安装python并切换到python3版本