2019.8.31 华为在其华为开源平台开源了方舟编译器源码

网址如下:https://code.opensource.huaweicloud.com/home

https://code.opensource.huaweicloud.com/HarmonyOS/OpenArkCompiler/home

打开Readme.md,进入“环境配置”,可以看到

开发环境推荐

您需要安装一个64位版本的Ubuntu(推荐Ubuntu 16.04)

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

出现问题

在我输入第一行命令后

出现了

Note, selecting 'git' instead of 'git-core'
Note, selecting 'lib32z1-dev' instead of 'lib32z-dev'
E: Unable to locate package python-jenkins

所以我选择照着他的要求修改,并将“python-jenkins”从中删除

sudo apt-get -y install openjdk-8-jdk git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko python-requests python-xlwt libglib2.0-dev libpixman-1-dev linux-libc-dev:i386

完成安装后,我查找方法安装python-jenkins

// 先安装 python-pip
sudo apt install python-pip
// 安装 python-jenkins
sudo pip install python-jenkins

如是,第一条命令所要求的环境都安装成功了

不过我在下载之后有报错说E: Unable to fetch http:...../qemu/...

所以我就直接sudo apt-get install qemu了

还有一个报错 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing

我就直接sudo apt-get update后就再没管他了(事后证明这里出现了大问题)

再执行第二条命令

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

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

回到Readme.md下的环境配置,

下载clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04
LLVM下载地址:http://releases.llvm.org/download.html#8.0.0

放置到openarkcompiler/tools目录,打开openarkcompiler/build/config/BUILDCONFIG.gn文件,将GN_C_COMPILERGN_CXX_COMPILERGN_AR三个变量配置为Clang编译器所在路径,例如:

GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang"
GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/clang++"
GN_AR = "${MAPLE_ROOT}/tools/clang_llvm-8.0.0-x86_64-linux-gnu-ubuntu-16.04/bin/llvm-ar"

其中${MAPLE_ROOT}为openarkcompiler源码根目录。

安装Ninja、GN 并完成配置

下载Ninja(v1.9.0)GN(Linux Version)
Ninja下载地址:https://github.com/ninja-build/ninja/releases
GN下载地址:https://archive.softwareheritage.org/browse/content/sha1_git:2dc0d5b26caef44f467de8120b26f8aad8b878be/raw/?filename=gn

将GN和Ninja可执行程序放置到openarkcompiler/tools目录,打开openarkcompiler/Makefile文件,将GN和NINJA两个变量配置为GN和Ninja可执行程序所在路径。例如:

GN := ${MAPLE_ROOT}/tools/gn/gn
NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja

(这两个步骤都不会出现什么问题)

开始编译方舟编译器

回到Readme.md,进入“开发者指南”

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

source build/envsetup.sh
make

命令说明:

  • source build/envsetup.sh 初始化环境,将OpenArkCompiler工具链路径openarkcompiler/src/bin设置到环境变量中
  • make 编译OpenArkCompiler的Release版本
  • make BUILD_TYPE=DEBUG 编译OpenArkCompiler的Debug版本

出现问题

此时出现了问题

我在make时出现了报错

mkdir -p /out; /tools/gn gen /out --args=' GN_INSTALL_PREFIX="" GN_BUILD_TYPE="RELEASE" HOST_ARCH=64 MIR_JAVA=1'; cd /out; /tools/ninja -v  maple;
/bin/sh: 1: /tools/gn: not found
/bin/sh: 1: /tools/ninja: not found
Makefile:23: recipe for target 'mapleall' failed
make: *** [mapleall] Error 127

一开始我以为是我在改哪些config文件是改错了,我又反复检查这些文件,发现并没有错误

错后我猜想可能是环境的问题,我测试了一下java,居然发现根本没有,我就先安装上了Java

于是我开始重新配置环境,经过反复多次执行

sudo apt-get update
sudo apt-get -y install openjdk-8-jdk git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip lib32z1-dev qemu g++-multilib gcc-multilib python3-paramiko python-paramiko 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

之后,知道出现0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

再次尝试执行编译

source build/envsetup.sh
make

就成功了

本想测试编译器究竟能不能使用的,但我编写了一个helloworld程序,使用maple编译,却始终报出

Error 40: Init Fail!
的错误,我改不清楚这是什么情况,还请各位高手赐教。

我使用的系统是Ubuntu18.04版本的

##################################################################################

2019.09.01

又找到了个网站,方舟编译器目前的官网https://www.openarkcompiler.cn/home

可以下载到二进制文件

拿来编译,仍然报错Error 40: Init Fail!

实在找不到方舟编译器该如何使用,也没个文档,难受ing...

###################################################################

编译(使用官方提供的编译器二进制文件)

又在官网https://www.openarkcompiler.cn/home上查看编译演示

开始演示

可以看到

maple --mplt libjava-core/libjava-core.mplt -O0 HelloWorld.jar
//--mplt libjava-core.mplt 加载libjava-core.mplt文件, -O0 默认编译优化level
Starting jbc2mpl // OpenArkCompiler前端:编译.jar文件,生成原始的IR文件(.mpl)。
Starting:jbc2mpl -mplt libjava-core.mplt HelloWorld.jar
jbc2mpl consumed 1s
Starting mpl2mpl&mplme // OpenArkCompiler中端:编译.mpl文件,生成中端优化后的IR文件(.VtableImpl.mpl)。其中,mpl2mpl是中端的功能框架,me是中端的优化框架
Starting maple --run=me:mpl2mpl --option=' --quiet: --quiet --regnativefunc --maplelinker' HelloWorld.mpl //--quiet 减少不必要的日志打印, --regnativefunc 动态链接绑定选项, --maplelinker OpenArkCompiler链接器
Starting parse input
Parse consumed 0s
Processing mpl2mpl&mplme
mpl2mpl&mplme consumed 0s
Starting mplcg // OpenArkCompiler后端:编译.VtableImpl.mpl文件,生成后端优化后的汇编文件(.VtableImpl.s)。
Starting:mplcg --fpic --maplelinker --no-pie --quiet --verbose-asm HelloWorld.VtableImpl.mpl //--fpic fpic功能开启选项, --no-pie pie功能关闭选项, --verbose-asm 汇编文件增加注释信息
mplcg consumed 1s
//(当前方舟编译器只支持生成.s文件,运行时库未开源,生成.so的过程不做演示。)
编译完成生成 (HelloWorld).so

从第一行中我们可以了解到maple操作的对象是jar文件,而非java源码文件

所以我们使用java2jar生成jar文件

./java2jar HelloWorld.jar ./MANIFEST.MF HelloWorld.class

再进行编译,

 ./maple --mplt libjava-core/libjava-core.mplt -O0 HelloWorld.jar

但此时又出错误了

Starting jbc2mpl
Starting:./jbc2mpl -mplt libjava-core/libjava-core.mplt  HelloWorld.jar
Tid(3755): CHECK/CHECK_FATAL failure: f != nullptr at [../../../mapleall/maple_ir/src/bin_mpl_import.cpp:63] Error while reading the binary file: libjava-core/libjava-core.mplt
Error while Exe, cmd: ./jbc2mpl args:  -mplt libjava-core/libjava-core.mplt  HelloWorld.jar
Error 40: Compile Fail!

啊!!!      -_-!!

继续难受ing,继续求各位大佬赐教

华为方舟编译器OpenArkCompiler编译相关推荐

  1. 安卓代码拉下来编译后怎么运行_科普:什么是华为方舟编译器?如何工作?荣耀手机能用吗?...

    EMUI发展至今,服务着216个国家和地区中的4.7亿日活跃用户.我们不忘初心,砥砺前行,只为更好地服务用户. 从EMUI5.0的"天生快,一生快",到EMUI8.2的GPU Tu ...

  2. 完全开源!华为方舟编译器正式支持C语言了,并开放鸿蒙教程!

    点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 来自:http://www.kkj.cn/ 2019年8月底,华为方舟编译器(OpenAr ...

  3. 【IT资讯】华为方舟编译器编译工具正式发布和工具下载

    01. 概述 2019华为全球开发者大会将在8月9日-11日在华为松山湖基地召开.本次开发者大会邀请了1500位合作伙伴.5000名全球开发者,将是华为历来规模最大的一次会议.在这次大会上,华为方舟编 ...

  4. 方舟编译器java代码_华为方舟编译器编译工具正式发布

    2019 华为全球开发者大会将在 8 月 9 日-11 日在华为松山湖基地召开.本次开发者大会邀请了 1500 位合作伙伴.5000 名全球开发者,将是华为历来规模最大的一次会议.在这次大会上,华为方 ...

  5. 华为方舟编译器开源官网正式上线

    [摘要] 8月31日,华为方舟编译器开源官网正式上线. 本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch6 ...

  6. 华为方舟编译器正式开源,采用自主平台托管

    前不久华为开发者大会上,华为给出了鸿蒙OS及方舟编译器的开源时间表,这着实让开发者们兴奋了一把.现在华为兑现承诺,8月31日,华为方舟编译器开源官网正式上线了. 方舟开源,自主托管 根据公布的信息,本 ...

  7. 重磅!华为方舟编译器招募 2000 程序员!

    作者 | 胡巍巍 出品 | 程序人生(ID:coder_life) 华为北京研究所的食堂,周末也好热闹! 9月7日,笔者到华为北研所,参加华为方舟编译器(以下简称"方舟")的开源主 ...

  8. 华为方舟编译器开源官网正式上线,并首次开放了框架源码!

    2019 年 8 月 31 日,华为方舟编译器开源官网正式上线,并首次开放了框架源码.方舟编译器对终端软件编译机制进行了架构级优化,将显著地提升用户体验. 官方网站: https://www.open ...

  9. 华为方舟编译器开源官网正式上线:源代码已开放下载;中兴通讯与北京交通大学、中国移动北京公司签署 “5G战略合作框架协议”……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

最新文章

  1. Tornado推出2.0版
  2. python中@修饰符用法
  3. Android libcutils库中整数溢出导致的堆破坏漏洞的发现与利用
  4. HH SaaS电商系统的仓储系统设计
  5. DLM - stackglue 层
  6. Android基础教程(四)之------获取手机联系人信息
  7. 水水推荐学习PHP必备的函数集[zt]
  8. linux游戏性能更好,linux游戏,linux游戏性能
  9. 为什么selenium定位不到元素
  10. 190330每日一句
  11. 计算机二级真题期刊论文模板,标准期刊论文格式模板_优秀论文范文3000字
  12. C基础:画直线+源码
  13. python 常微分方程_关于常微分方程(ODE)和优化,在Python中
  14. Java+学生信息管理系统+GUI+文件
  15. python 计算gdp_菜鸟笔记Python3——数据可视化(三)世界GDP分析
  16. 贪心题集(vjoj)
  17. 西安交通大学915考研--编程题Java代码踩坑(2020年真题)
  18. MATLAB计算信号短时平均过零率
  19. java的rest教程,REST接口
  20. 基于人工智能的多肽药物分析的子问题——蛋白质的三级结构预测的第一周学习记录

热门文章

  1. VBA 简易考试系统
  2. 织梦dedecms深蓝色室内装修设计公司网站模板(自适应手机移动端)
  3. 反乙肝歧视:不仅仅是1.2亿人的胜利
  4. 12.linux删除安装失败的安装程序
  5. android Emoji表情输入,输入表情和输入法表情输入相同
  6. C语言技巧一 全局变量定义
  7. html select ios 闪屏,移动端常见的兼容性问题.md
  8. day7字典和集合作业
  9. 快速实现Spring定时任务
  10. 【程序员薅羊毛系列1】京东官方购物返利得钢镚!