天天看点

方舟编译器第一次尝试1.安装openJDK以及gcc

    华为的方舟编译器开源了,这是一个可以绕开jvm的编译神器,提高运行速度,这个足以让中国人骄傲了!

      抱着好奇的态度,按照官方网站的指示,下载了一下源代码(官网百度搜不到,我用咕果才搜到,链接:https://www.openarkcompiler.cn/home),为了方便大家下载,我 已经把其中三个工具打包上传了,还有另外一个太大了,超过了300M,传不上来,下载地址:https://download.csdn.net/download/memoryjs/11719166

     好了,下载好了之后,看看 ReadMe,主要部分

方舟编译器第一次尝试1.安装openJDK以及gcc

  也就是说,目前开放的就只支持让你编译几个Demo玩玩,都是很简单的类,余大嘴吹的牛逼,还得后期实现(心疼华为的兄弟),好了我们继续看

 笔者装的是Ubuntu18.04,官方推荐16.04,但是Ubuntu官网目前只能下载到18.04以及更高版本了,没关系,装起来吧,然后按照官方教程来,这里只是搬砖,感兴趣的去官网看看

1.安装openJDK以及gcc

sudo 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 libglib2.0-dev libpixman-1-dev linux-libc-dev:i386

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

这个在Ubuntu就是两条命令的事情,看网速,我是装了十分钟

2.安装Clang编译器并完成配置(用于编译方舟编译器代码)

就是这个玩意太大了,超过了300M,所以我无法上传到复现,可以自己去官网下载,官网网址

LLVM下载地址: http://releases.llvm.org/download.html#8.0.0

这里说一点:

llvm最新的llvm的版本是8.0.1.,并没有Ubuntu18.04的编译好的二进制文件,只有8.0.0有,官方也推荐8.0.0,所以建议还是下这个版本吧,如果你能下载安装Ubuntu16.04,可以按照官方推荐的来

方舟编译器第一次尝试1.安装openJDK以及gcc

 我这里下载的是Ubuntu18.04的版本,可以看到它还支持其他的操作系统

3.安装Ninja、GN并完成配置

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

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

这两个工具已经集成在 https://download.csdn.net/download/memoryjs/11719166 里面了可以直接下载

4.下载方舟编译源码,并且把上面的工具放入对应目录下

方舟编译器源码已经集成在https://download.csdn.net/download/memoryjs/11719166 里面了可以直接下载,如果没有积分,可以去方舟编译器的主页下载,也很方便,我这里只是做了一个集成

方舟编译器第一次尝试1.安装openJDK以及gcc

这是解压后的目录,没有out目录,out目录是配置好后,编译出来的

方舟编译器第一次尝试1.安装openJDK以及gcc

然后就是配置这些工具到方舟编译器的目录下,上图是把对应文件放入的情况,配置信息如下:

1)clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04 

放置到

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-18.04/bin/clang"
GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang++"
GN_AR_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-ar"
           

2)Ninja、GN配置

将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
           

完成以上操作后,可以准备编译了。

5.编译方舟编译器

在openarkcompiler目录下执行以下命令,编译出OpenArkCompiler,默认输出路径 openarkcompiler/out/bin。两条命令:

source build/envsetup.sh
make
           

编译完成后,就会输出out目录

方舟编译器第一次尝试1.安装openJDK以及gcc

生成的文件全在bin之后。

6.踩过的坑

1.编译错误,像所有尝试一下,编译方舟编译器的时候出错,原因竟然是因为

clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04这个,官网下在下来后,解压的目录是clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04,看出来没,clang后面是个+号,所以编译的时候导致找不到目录

2.用方舟编译器编译实例HelloWorld.java的时候,提示Permision Denied,因为编译出来的文件没有可执行权限,如图

方舟编译器第一次尝试1.安装openJDK以及gcc

对相应的文件,把权限改成755 即可

7.用方舟编译器,编译简单的实例代码

方舟编译器第一次尝试1.安装openJDK以及gcc

然而编译报错...这个我还没解决,不过官网有网页实例,感兴趣的可以点点

期待方舟编译器的进一步开源,真正编译Android的apk