方舟之应用编译篇

方舟之应用编译篇_第1张图片

华为方舟编译器开源了介绍了方舟编译器的基本功能与编译方法,那么方舟编译器该怎么用,如何对我们的应用进行优化呢?

查找华为方舟编译器的相关资料,发现其开源范围介绍说:目前开源的部分只是编译器IR+中端语言部分的源码,而编译器前端、后端(生成汇编)、编译优化的代码需要在后续逐步开源(但是从编译情况对比来看,目前除了运行时库生成so文件的部分未开源,其余文件均可生成,具体还需要等待全部代码开源后确认)。

 

·  正  ·  文  ·  来  ·  啦  ·

 

好了,话不多说,开始DEMO代码的编译吧(以samples/helloworld为例,在编译前需要保证方舟编译器已经编译通过,生成了需要的maple、mplcg、jbc2mpl、java2jar这四个文件)。

1. 下载环境需要的jar包(开源代码缺少java-core.jar包)

//OpenArkCompiler//使用wget https://gitee.com/mirrors/java-core/blob/master/java-core.jar 获取的文件有问题mkdir libjava-corecd libjava-coregit clone https://gitee.com/mirrors/java-core.gitmv java-core/java-core.jar ./

 

2. 配置环境,生成libjava-core IR文件

//OpenArkCompilersource build/envsetup.sh//OpenArkCompiler/libjava-core../out/bin/jbc2mpl -injar java-core.jar -out libjava-core

Tips:

  • 这个过程使用了知乎大神的配置方法,在此感谢!(附链接:

    https://zhuanlan.zhihu.com/p/81340230)

  • 下载java-core.jar包时一定记得使用git clone方法

 

3. libjava-core IR文件生成

//OpenArkCompiler/libjava-corejava-core.jarlibjava-core.mpllibjava-core.mplt

4. 环境配置成功,开始编译HelloWorld

//OpenArkCompiler/samples/helloworldmake

5. helloworld编译结果展示

HelloWorld.classHelloWorld.jarHelloWorld.mplHelloWorld.mpltHelloWorld.VtableImpl.groots.txtHelloWorld.VtableImpl.mplHelloWorld.VtableImpl.primordials.txtHelloWorld.VtableImpl.s

到这里就编译结束了,程序怎么运行呢?查找官方说明:

 

方舟之应用编译篇_第2张图片

 

歇菜了,关键部分暂时未开源,目前只能看到优化后的中间文件,可执行的.so文件生成过程暂未开放。退而求其次,我们从官网上面可以看到其运行结果:
(https://www.openarkcompiler.cn/demonstration)

 

目前方舟编译器的源码还未完全开源,在代码执行上面能够接触的就是这么多,但是其设计原理与方案都有详细的文档和代码介绍,可供众多技术人学习。

 

今天看了一篇文章,对方舟编译器的介绍非常详细,有兴趣可以了解下方舟编译器的成长历程与突破性的设计方案:

华为新贵!方舟编译器的荣光和使命

 

你可能感兴趣的:(技术分享)