方舟,渡人先渡己:Toolchain怎么跑?

上篇文章中我们对OpenArkCompiler的编译作了简单介绍。这次我们将试着让Toolchain跑起来(并不可能).

编译产物在OpenArkCompiler/out/bin中,有mplcg,jbc2mpl两个二进制文件,java2jar脚本(shell script)以及irbuild,maple两个库文件(shared library).回头看OpenArkCompiler/Makefile,定位到install,有如下指令:

.PHONY: install

install: mapleall

    $(shell cp -rf $(MAPLE_ROOT)/src/bin/java2jar $(MAPLE_ROOT)/out/bin/)

    $(shell cp -rf $(MAPLE_ROOT)/src/bin/jbc2mpl $(MAPLE_ROOT)/out/bin/)

    $(shell cp -rf $(MAPLE_ROOT)/src/bin/mplcg $(MAPLE_ROOT)/out/bin/)

很显然,只有irbuild,maple是先前的编译产物,而另外三个可执行文件都是直接cp过来的。我们在此逐个分析一下这些可执行文件的作用。

既然java2jar是shell script,我们不妨来看看里面都写了啥:

#!/bin/bash

OUTPUT=$1

CORE_ALL_JAR=$2

shift 2

javac -g -d . -bootclasspath ${CORE_ALL_JAR} $@

jar -cvf ${OUTPUT} *.class

是先用javac将.java编译成.class,再用jar打包。

再看jbc2mpl,inclass/-injar参数传入.class/.jar,然后输出为.mpl/.mplt:

//HelloWorld.java

public class HelloWorld {

    public static void main(String[] args) {

        System.out.println("Hello World");

    }

}

HelloWorld测试一下:

报错。但是jbc2mpl并没开源,自然也不知道发生了啥。

试着反编译查一下fe_type_manager这个值,无果。

mplcg,从它支持的parameters来看大概是输入.mpl然后输出.s文件供MapleLinker用?

maple和irbuild,大概是针对编译器中间语言的工具。由于刚才jbc2mpl没能跑起来,这里我们也无法对其进行测试。

在官方文档中我找到了如下的表述,解释了Maple IR的作用:

MAPLE IR is an internal program representation to support program compilation and execution. Because any information in the source program may be useful for program analysis and optimization, MAPLE IR aims to provide information about the source program that is as complete as possible.

Reference: https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/file?ref=master&path=doc%2FMapleIRDesign.md

所以要让Toolchain跑起来,关键就是jbn2mpl.回头看OpenArkCompiler/build/core/目录下的几个makefile,我似乎发现了一些有趣的东西。

也就是说,我们需要java-core.jar,而出于某些原因这个包并不在开源列表中,也没有被官方文档提及。

(此处忽略笔者的吐槽)

Google上可以查到一些同名文件,不过显然不适用。不管怎样,反正我没有咕咕咕(滑稽)如果能解决这个问题,或许能在后续的文章中对Maple IR和OpenArkCompiler/samples中的测试用例作更深入的探讨。

写到这里,笔者回头看了下方舟编译器的“开源计划”,仍然停留在2019年8月,并且因为必要文件的缺失,开发者并不能“构建出完整编译器工具链”。

算了,我们还是一起沸腾吧…


本文首发于淀粉月刊:https://dfkan.com

本文作者:无用挂件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容