华为方舟编译器OpenArkCompiler编译
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_COMPILER
、GN_CXX_COMPILER
和GN_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编译相关推荐
- 安卓代码拉下来编译后怎么运行_科普:什么是华为方舟编译器?如何工作?荣耀手机能用吗?...
EMUI发展至今,服务着216个国家和地区中的4.7亿日活跃用户.我们不忘初心,砥砺前行,只为更好地服务用户. 从EMUI5.0的"天生快,一生快",到EMUI8.2的GPU Tu ...
- 完全开源!华为方舟编译器正式支持C语言了,并开放鸿蒙教程!
点击"开发者技术前线",选择"星标????" 让一部分开发者看到未来 来自:http://www.kkj.cn/ 2019年8月底,华为方舟编译器(OpenAr ...
- 【IT资讯】华为方舟编译器编译工具正式发布和工具下载
01. 概述 2019华为全球开发者大会将在8月9日-11日在华为松山湖基地召开.本次开发者大会邀请了1500位合作伙伴.5000名全球开发者,将是华为历来规模最大的一次会议.在这次大会上,华为方舟编 ...
- 方舟编译器java代码_华为方舟编译器编译工具正式发布
2019 华为全球开发者大会将在 8 月 9 日-11 日在华为松山湖基地召开.本次开发者大会邀请了 1500 位合作伙伴.5000 名全球开发者,将是华为历来规模最大的一次会议.在这次大会上,华为方 ...
- 华为方舟编译器开源官网正式上线
[摘要] 8月31日,华为方舟编译器开源官网正式上线. 本次方舟编译器开源的是编译器框架部分源码,包括编译器中间表示(IR)和语言编译实现,同时搭配编译器其他二进制组件,实现Java程序到aarch6 ...
- 华为方舟编译器正式开源,采用自主平台托管
前不久华为开发者大会上,华为给出了鸿蒙OS及方舟编译器的开源时间表,这着实让开发者们兴奋了一把.现在华为兑现承诺,8月31日,华为方舟编译器开源官网正式上线了. 方舟开源,自主托管 根据公布的信息,本 ...
- 重磅!华为方舟编译器招募 2000 程序员!
作者 | 胡巍巍 出品 | 程序人生(ID:coder_life) 华为北京研究所的食堂,周末也好热闹! 9月7日,笔者到华为北研所,参加华为方舟编译器(以下简称"方舟")的开源主 ...
- 华为方舟编译器开源官网正式上线,并首次开放了框架源码!
2019 年 8 月 31 日,华为方舟编译器开源官网正式上线,并首次开放了框架源码.方舟编译器对终端软件编译机制进行了架构级优化,将显著地提升用户体验. 官方网站: https://www.open ...
- 华为方舟编译器开源官网正式上线:源代码已开放下载;中兴通讯与北京交通大学、中国移动北京公司签署 “5G战略合作框架协议”……...
关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...
最新文章
- Tornado推出2.0版
- python中@修饰符用法
- Android libcutils库中整数溢出导致的堆破坏漏洞的发现与利用
- HH SaaS电商系统的仓储系统设计
- DLM - stackglue 层
- Android基础教程(四)之------获取手机联系人信息
- 水水推荐学习PHP必备的函数集[zt]
- linux游戏性能更好,linux游戏,linux游戏性能
- 为什么selenium定位不到元素
- 190330每日一句
- 计算机二级真题期刊论文模板,标准期刊论文格式模板_优秀论文范文3000字
- C基础:画直线+源码
- python 常微分方程_关于常微分方程(ODE)和优化,在Python中
- Java+学生信息管理系统+GUI+文件
- python 计算gdp_菜鸟笔记Python3——数据可视化(三)世界GDP分析
- 贪心题集(vjoj)
- 西安交通大学915考研--编程题Java代码踩坑(2020年真题)
- MATLAB计算信号短时平均过零率
- java的rest教程,REST接口
- 基于人工智能的多肽药物分析的子问题——蛋白质的三级结构预测的第一周学习记录