根据方舟官方文档,首先要把方舟编译器的源码,编译成可执行代码maple
1、操作系统环境:
目前我使用的是Ubuntu 16.04 虚拟机 而且官方推荐Ubuntu 16.04
2、安装支持包及库文件:
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 python3-paramiko python-paramiko python-jenkins
python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386
sudo apt-get -y install gcc-5-aarch64-linux-gnu g++-5-aarch64-linux-gnu
3 进入方舟编译器开源地址:
https://github.com/HarmonOS/OpenArkCompiler
下载相关代码并解压到相应目录下
我这里放在home 目录下 并修改目录名为 OpenArkCompiler
4、llvm和clang的下载及配置:
从LLVM Download Page 下载 LLVM8.0.0的Ubuntu 16.04 (.sig) 二进制包。解压之后,放到OpenArkCompiler/tools目录之下。
注意:这里要修改名字clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04 为clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04
加号+改为下划线_
5、下载和配置Ninja、GN:
从https://github.com/ninja-build/ninja/releases 下载Ninja v1.9.0,在tools下新建目录ninja_1.9.0,将ninja可执行文件放到ninja_1.9.0目录之下。
最好都使用chmod 777 ninja 处理一下。
从https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn 下载GN,在tools下新建目录gn,将gn可执行文件放到gn目录之下。
最好都使用chmod 777 gn 处理一下。
6、在OpenArkCompiler目录之下依次执行如下两个命令:
source build/envsetup.sh
make
经过以上操作后,系统就编译好了maple了。
要编译成功samples 下的helloworld.java 还需要做如下修改
7 修改 build/core/java2jar.mk 为如下代码。
$(APP_JAR): %.jar : %.java
$(JAVA2JAR) $(APP_JAR) "$(wildcard *.java)"
也就是将里面的
${MAPLE_ROOT}/libjava-core/java-core.jar
删除,让它不依赖于这个输入文件
8 修改 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)
9 修改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
10 最后需要下载我们一直在讨论的java-core.jar 库。
下载路径如下,并把相关库放到如下目录的libjava-core里面
https://gitee.com/mirrors/java-core
进入samples/helloworld目录下
make 就可以了,
最后的结果如下图
没有报什么错误,并且在本目录下生成了一些必要的文件了。
整个过程参考了如下大牛的讲解,https://zhuanlan.zhihu.com/p/81076176