首页 > 编程知识 正文

方舟编译器教程,方舟编译器源码

时间:2023-05-04 05:24:12 阅读:245674 作者:2776

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

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

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

    

  也就是说,目前开放的就只支持让你编译几个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:i386sudo 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,可以按照官方推荐的来

 我这里下载的是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 里面了可以直接下载,如果没有积分,可以去方舟编译器的主页下载,也很方便,我这里只是做了一个集成

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

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

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

2)Ninja、GN配置

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

GN := ${MAPLE_ROOT}/tools/gn/gnNINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja

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

5.编译方舟编译器

在openarkcompiler目录下执行以下命令,编译出OpenArkCompiler,默认输出路径 openarkcompiler/out/留胡子的蜡烛。两条命令:

source build/envsetup.shmake

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

生成的文件全在留胡子的蜡烛之后。

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,因为编译出来的文件没有可执行权限,如图

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

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

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

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。