一、ubuntu18.04按照官方文档搭建环境出错
邮件列表有人说ubuntu18.04按照官方文档搭建编译环境会报错,如下:
1
2
3
4
5
| 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
|
我对邮件列表回复却被拒绝,提示“收件人邮件地址(developer@openarkcompiler.cn)不存在,邮件无法送达。”,所以就在我博客写好了。
出这个问题是没有设置好MAPLE_ROOT
变量导致,需要把它设置为源码openarkcompiler
目录位置,例如我的:
1
2
3
| liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler$ pwd
/home/liuxu/Downloads/OpenArkCompiler-0.2/openarkcompiler
liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler$ export MAPLE_ROOT=/home/liuxu/Downloads/OpenArkCompiler-0.2/openarkcompiler
|
文档是以ubuntu16.04为例子,现在普遍用ubuntu18.04,需要改一些东西,这里说一下完整步骤。
二、开始搭建环境
1.按照文档安装依赖。
1
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 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
|
2.下载clang+llvm,我这里直接给ubuntu18.04的下载地址,其他版本选择自己系统对应的压缩包。
http://releases.llvm.org/8.0.0/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
3.编辑openarkcompiler/build/config/BUILDCONFIG.gn,注意此处不要直接复制文档,文档是ubuntu16.04目录,我们是ubuntu18.04,看我的目录位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler/tools$ pwd
/home/liuxu/Downloads/OpenArkCompiler-0.2/openarkcompiler/tools
liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler/tools$ tree -L 2
.
├── clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04
│ ├── bin
│ ├── include
│ ├── lib
│ ├── libexec
│ └── share
├── clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
└── README
8 directories, 5 files
|
那么此时我的配置文件就应该这么设置:
1
2
3
| GN_C_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang"
GN_CXX_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang++"
GN_AR_COMPILER = "${MAPLE_ROOT}/tools/clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-ar"
|
4.下载ninja和gn并配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler/tools$ pwd
/home/liuxu/Downloads/OpenArkCompiler-0.2/openarkcompiler/tools
liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler/tools$ tree -L 2
.
├── clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04
│ ├── bin
│ ├── include
│ ├── lib
│ ├── libexec
│ └── share
├── clang+llvm-8.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz
├── gn
│ └── gn
├── ninja_1.9.0
│ └── ninja
├── ninja-linux.zip
└── README
|
注意gn下载后没有执行权限,要手动给它,不然脚本会没有权限执行它:
1
| liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler$ chmod +x /home/liuxu/Downloads/OpenArkCompiler-0.2/openarkcompiler/tools/gn/gn
|
此时我按照Makefile命令的目录所以不需要改openarkcompiler/Makefile配置文件。Makefile相关配置如下,和目录匹配。
1
2
| GN := ${MAPLE_ROOT}/tools/gn/gn
NINJA := ${MAPLE_ROOT}/tools/ninja_1.9.0/ninja
|
5.设置MAPLE_ROOT变量,否则脚本所有${MAPLE_ROOT}会为空,导致其他目录直接定位为从根目录开始。
1
| liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler$ export MAPLE_ROOT=/home/liuxu/Downloads/OpenArkCompiler-0.2/openarkcompiler
|
6.开始编译,我的CPU是amd 3800x,8核16线程,所以我使用了cpu+1编译。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler$ pwd
/home/liuxu/Downloads/OpenArkCompiler-0.2/openarkcompiler
liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler$ make -j17
liuxu:~/Downloads/OpenArkCompiler-0.2/openarkcompiler$ tree -L 2 out/
out/
├── args.gn
├── bin
│ ├── java2jar
│ ├── jbc2mpl
│ ├── maple
│ └── mplcg
├── build.ninja
├── build.ninja.d
├── lib
│ ├── 64
│ └── libmplmewpo.a
├── obj
│ ├── ABS_PATH
│ ├── maple.stamp
│ └── src
└── toolchain.ninja
6 directories, 10 files
|
这样就编译好了,你可以make install
或放到自定义目录去。