方舟之应用编译篇
作者:互联网
华为方舟编译器开源了介绍了方舟编译器的基本功能与编译方法,那么方舟编译器该怎么用,如何对我们的应用进行优化呢?
查找华为方舟编译器的相关资料,发现其开源范围介绍说:目前开源的部分只是编译器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-core
cd libjava-core
git clone https://gitee.com/mirrors/java-core.git
mv java-core/java-core.jar ./
2. 配置环境,生成libjava-core IR文件
//OpenArkCompiler
source build/envsetup.sh
//OpenArkCompiler/libjava-core
../out/bin/jbc2mpl -injar java-core.jar -out libjava-core
Tips:
-
这个过程使用了知乎大神的配置方法,在此感谢!(附链接:
-
下载java-core.jar包时一定记得使用git clone方法
3. libjava-core IR文件生成
//OpenArkCompiler/libjava-core
java-core.jar
libjava-core.mpl
libjava-core.mplt
4. 环境配置成功,开始编译HelloWorld
//OpenArkCompiler/samples/helloworld
make
5. helloworld编译结果展示
HelloWorld.class
HelloWorld.jar
HelloWorld.mpl
HelloWorld.mplt
HelloWorld.VtableImpl.groots.txt
HelloWorld.VtableImpl.mpl
HelloWorld.VtableImpl.primordials.txt
HelloWorld.VtableImpl.s
到这里就编译结束了,程序怎么运行呢?查找官方说明:
歇菜了,关键部分暂时未开源,目前只能看到优化后的中间文件,可执行的.so文件生成过程暂未开放。退而求其次,我们从官网上面可以看到其运行结果:
(https://www.openarkcompiler.cn/demonstration)
目前方舟编译器的源码还未完全开源,在代码执行上面能够接触的就是这么多,但是其设计原理与方案都有详细的文档和代码介绍,可供众多技术人学习。
今天看了一篇文章,对方舟编译器的介绍非常详细,有兴趣可以了解下方舟编译器的成长历程与突破性的设计方案:
标签:core,java,方舟,开源,编译,编译器,应用 来源: https://blog.csdn.net/littlebirdfirst/article/details/100634654