方舟编译器 HelloWorld

方舟编译器HelloWorld

一,前期准备工作,需要乌班图系统和方舟编译器以及相应的软件包

方舟编译器已经开源,官网https://www.openarkcompiler.cn

系统环境 Vmware虚拟机安装的 Ubuntu 16.04.6

2.png


所有文件下载,百度网盘里的都是我从官网以及github一个个辛苦下载下来的软件集合,省去了一个个去下载和网速不好的麻烦。

链接:https://pan.baidu.com/s/1SWU2o8IDMarUhgtRCVao6Q&shfl=sharepset 

提取码:65re 

复制这段内容后打开百度网盘手机App,操作更方便哦

二,安装开发环境

3.png

2.1 由于乌班图默认的源在美国,所以需要更换为国内源,我用的阿里云,否则下载软件很慢,怎么更换就不贴出来了,百度很容易。

apt-get update

运行完这条命令就好了,千万别脑残习惯性的下一步apt-get upgrade,否则过一会你的系统就变成ubuntu18.04了。

2.2 安装文件上传工具,将百度网盘里面下载的OpenArkCompiler-All.zip包上传到虚拟机乌班图里面。

apt-get install lrzsz -y

rz命令上传

rz

2.3 解压文件包

unzip OpenArkCompiler-All.zip

4.png

2.4 安装开发编译环境

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

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

2.5 解压文件包以及将某些包移动到相应位置

   30  cd OpenArkCompiler-All/

   31  ls

   32  unzip OpenArkCompiler.zip 

   33  unzip gn.zip 

   34  unzip ninja_1.9.0.zip 

   35  ls

   36  tar -xvf clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz 

   37  ls

   38  mv clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/ OpenArkCompiler/tools/

   39  ls

   40  mkdir OpenArkCompiler/tools/gn

   41  mkdir OpenArkCompiler/tools/ninja_1.9.0

   42  mv ninja OpenArkCompiler/tools/ninja_1.9.0/

   43  mv gn OpenArkCompiler/tools/gn/

上面的命令主要包含以下几个步骤

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

安装Ninja、GN 并完成配置

将GN和Ninja可执行程序放置到openarkcompiler/tools目录,并且增加执行权限

   54  cd /root/OpenArkCompiler-All/OpenArkCompiler/

   55  chmod 777  tools/gn/gn

   56  chmod 777  tools/ninja_1.9.0/ninja 

   59  mv tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/ tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/

   这条命令你没看错,就是为了把那个+号改成下划线。不改的话会报错,提示没有那个目录

三,开始编译maple

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

source build/envsetup.sh 初始化环境,将OpenArkCompiler工具链路径openarkcompiler/src/bin设置到环境变量中

make 编译OpenArkCompiler的Release版本

make BUILD_TYPE=DEBUG 编译OpenArkCompiler的Debug版本

   60  source build/envsetup.sh 

   61  make

   62  maple --version

5.png

经过以上操作后,系统就编译好了maple了。

四,编译helloworld

要编译成功samples 下的helloworld.java 还需要做如下修改

4.1 修改 build/core/java2jar.mk 为如下代码

$(APP_JAR): %.jar : %.java

        $(JAVA2JAR) $(APP_JAR)  "$(wildcard *.java)"

也就是将里面的

${MAPLE_ROOT}/libjava-core/java-core.jar

删除,让它不依赖于这个输入文件

4.2 修改 build/core/jbc2mpl.mk 为如下代码。

$(APP_MPL): %.mpl : %.jar $(JBC2MPL_BIN)

        $(JBC2MPL_BIN) -injar ${MAPLE_ROOT}/libjava-core/java-core.jar -injar $(APP_JAR) -out $(APP)

用java-core.jar 替换 libjava-core.mplt 也就是$(LIB_MPLT)

4.3 修改out/bin/java2jar 为如下代码

#!/bin/bash

OUTPUT=$1

CORE_ALL_JAR=$2

JAVA_FILE=$2

shift 2

javac -g -d . ${JAVA_FILE}

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

jar -cvf ${OUTPUT} *.class

4.4 下载java-core.jar 库,并把相关库放到如下目录的libjava-core里面命令如下:

   63  nano build/core/java2jar.mk

   64  nano build/core/jbc2mpl.mk

   65  nano out/bin/java2jar

   66  ls

   67  mkdir libjava-core

   68  cd ..

   69  ls

   70  unzip libjava-core.zip 

   71  ls

   72  mv java-core/java-core.jar OpenArkCompiler/libjava-core/

   73  cd OpenArkCompiler/

   74  ls

  

五,开始编译HelloWorld

   75  cd samples/helloworld/

   76  make

   77  java HelloWorld

1.png

可以看到目录下已经有了很多个文件

6.png

至此,已经圆满成功了。

六,后记

1,如果有报错,例如make的时候提示缺少分隔符,肯定是复制粘贴过去的格式有问题,那就需要

nano build/core/jbc2mpl.mk

从第二行最前面那开始一直删除到第一行最末尾,然后按回车,按一次tab键。这个问题我也是困扰了好久,最后自己试出来的,心酸。。。

2,网上其他文章说要执行这一步生成两个文件,我亲测做不做这一步都没关系,不做也可以make出来helloworld,那就等待其他人给出解释吧

../out/bin/jbc2mpl -injar java-core.jar -out libjava-core




最后编辑于:2019/10/19作者: admin

发表评论