1、编译环境:
Ubuntu16.04 64位
交叉编译平台:(SCM901 64位)(交叉编译相关配置可根据自己实际情况进行配置)
aarch64-linux-gnu
交叉编译工具链:
aarch64-linux-gnu-gcc aarch64-linux-gnu-g++
交叉编译依赖的库,工具:
ncurse-6.1
没有cmake工具的需要更新cmake工具:
apt-get install cmake
2、编译步骤
2.1 下载mysql版本mysql-boost.5.7.27.tar.gz:
下载地址:MySQL :: Download MySQL Community Serve

因为移植过程中会需要用到x86环境下生成的工具,所以先编译PC端的mysql。
2.1.1 tar-xf mysql-boost-5.7.27.tar.gz
2.1.2 cdmysql-5.7.27/BUILD/
2.1.3 vicompile-pentium64修改参数为(../boost表示上一级目录必须要有boost目录,所以下载源码的时候一定要下载带有boost的源码。或者自行指定有boost的目录也可)

2.1.4 apt-getinstall libncurses5-dev
2.1.5 ./compile-pentinum64
等待编译完成即可。

2.1.6 修改pc编译目录:
cd ../../
mv mysql-5.7.27 mysql-5.7.27-pc
2.2 交叉编译ncurses-6.1
2.2.1 下载ncurses-6.1.tar.gz
下载连接:http://mirrors.ustc.edu.cn/gnu/ncurses/

2.2.2 解压tar包:
tar -xfncurses-6.1.tar.gz
2.2.3 cdncurses-6.1/
2.2.4 配置:
./configure --host=aarch64-linux-gnu --prefix=/usr/local/ncurses-6.1-armCC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
2.2.5 编译:make
2.2.6 安装:makeinstall
2.3.0 mysql的交叉编译
2.3.1重新解压mysql-boost.5.7.27.tar.gz:
tar -xf mysql-boost-5.7.27.tar.gz
2.3.2 cdmysql-5.7.27
2.3.3 mkdirBUILD_ARM
2.3.4 cdBUILD_ARM
2.3.5 vicompile-arm
根据需要复制修改以下相关配置及路径
#! /bin/sh
path='dirname$0'
cmake.. -DWITH_DEBUG=0 -DSTACK_DIRECTION=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATIOIN=utf8_general_ci -DEXTRA_CHARSETS=all-DENABLED_LOCAL_INFILE=1 -DWITH_BOOST=../boost-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc-DCURSES_INCLUDE_PATH=/usr/local/ncurses-6.1-arm/include-DCURSES_LIBRARY=/usr/local/ncurses-6.1-arm/lib/libncurses.a
2.3.6 chmod755 ./compile-arm
2.3.7 ./compile-arm
2.3.8 配置成功
2.3.9 复制相关文件
cp../../mysql-5.7.27-pc/BUILD/extra/comp_err ./extra/
cp../../mysql-5.7.27-pc/BUILD/libmysql/libmysql_api_test ./libmysql
cp../../mysql-5.7.27-pc/BUILD/sql/gen_lex_hash ./sql/
cp../../mysql-5.7.27-pc/BUILD/scripts/comp_sql ./scripts/
cp../../mysql-5.7.27-pc/BUILD/sql/gen_lex_token ./sql/
cp../../mysql-5.7.27-pc/BUILD/extra/protobuf/protoc ./extra/protobuf/
2.3.10 make
出现异常error “Unsupported platform”
vi ../storage/innobase/include/os0atomic.ic
在os0atomic.ic190行附近,将IB_STRONG_MEMORY_MODEL改为HAVE_ATOMIC_BUILTINS

vi ../storage/innobase/include/os0atomic.h
在/os0atomic.h 55行附近,#define IB_STRONG_MEMORY_MODEL 后面添加
#else
#define HAVE_ATOMIC_BUILTINS

在os0atomic.h255行附近,
将HAVE_IB_ATOMIC_PTHREAD_T_GCC改为HAVE_ATOMIC_BUILTINS
将HAVE_GCC_SYNC_BUILTINS改为HAVE_ATOMIC_BUILTINS

继续make
make成功后执行make install

文件会安装至/usr/local/mysql下,建议执行make install时使用root权限
在/usr/local/mysql下打包相关/bin /include /lib 文件,上传至ARM平台