移植MySQL

本文描述移植mysql-5.5.54到mips平台的方法。

编译x86版本

mysql会先编译comp_errgen_lex_hashcomp_sql这三个工具,然后由这三个工具生成的源码和其他源码一起编译出最终文件。而使用mips交叉工具链编译出来的这三个工具是不能在x86主机上运行的,所以要先在主机上编译x86版本的mysql,然后修改mips平台的Makefile,指定使用x86版本的工具生成源码。

x86版本的编译指令是:

$ tar zxf mysql-5.5.54.tar.gz
$ mv mysql-5.5.54 mysql-5.5.54-x86
$ cd mysql-5.5.54-x86
$ cmake . # 不需要指定特殊的编译选项
$ make

定义mips交叉编译环境

新建文件mips.cmake,在里面定义目标平台使用的交叉编译环境和某些mysql特有的变量。

SET(CMAKE_SYSTEM_NAME Linux)
# $ENV{OCTEON_ROOT}表示引用环境变量OCTEON_ROOT
SET(CMAKE_C_COMPILER $ENV{OCTEON_ROOT}/tools/bin/mips64-octeon-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER $ENV{OCTEON_ROOT}/tools/bin/mips64-octeon-linux-gnu-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{OCTEON_ROOT}/opensource $ENV{OCTEON_ROOT}/tools-gcc-4.3/mips64-octeon-linux-gnu/sys-root)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

# 下面两个变量是mysql特有的变量,定义的值需要进行测试确认。
# 测试方法可以在CMakeList.txt中找到
SET(STACK_DIRECTION -1)
SET(CMAKE_BUILD_TYPE RelWithDebInfo)

生成mips交叉编译的Makefile

生成mysql的交叉编译Makefile的指令是:

$ tar zxf mysql-5.5.54.tar.gz
$ cd mysql-5.5.54
$ cmake                             \
-DCMAKE_TOOLCHAIN_FILE=mips.cmake   \ # 指定使用mips交叉工具链交叉编译
-DCMAKE_INSTALL_PREFIX=/usr         \ # mysql在目标文件系统中的安装路径
-DMYSQL_DATADIR=/data               \
-DSYSCONFDIR=/etc                   \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock   \
-DMYSQL_TCP_PORT=3306               \
-DEXTRA_CHARSETS=all                \
-DDEFAULT_CHARSET=utf8              \
-DDEFAULT_COLLATION=utf8_general_ci \
.

上述的选项中,除了-DCMAKE_TOOLCHAIN_FILE=mips.cmake以外,其余的变量都是可选的。

下面的4个命令将指定Makefile使用x86版本的comp_errgen_lex_hashcomp_sql工具生成源代码。

$ sed -i "s/\ comp_err\ /\ ..\/..\/mysql-5.5.54-x86\/extra\/comp_err\ /g" mysql-5.5.54/extra/CMakeFiles/GenError.dir/build.make
$ sed -i "s/\ gen_lex_hash\ /\ ..\/..\/mysql-5.5.54-x86\/sql\/gen_lex_hash\ /g" mysql-5.5.54/sql/CMakeFiles/sql.dir/build.make
$ sed -i "s/\ gen_lex_hash\ /\ ..\/..\/mysql-5.5.54-x86\/sql\/gen_lex_hash\ /g" mysql-5.5.54/sql/CMakeFiles/GenServerSource.dir/build.make
$ sed -i "s/\ comp_sql\ /\ ..\/..\/mysql-5.5.54-x86\/scripts\/comp_sql\ /g" mysql-5.5.54/scripts/CMakeFiles/GenFixPrivs.dir/build.make

编译安装mips版本

mysql的安装路径由目标文件系统在主机上的路径和**mysql在目标文件系统中的路径**2部分组成:
- mysql在目标文件系统中的路径在生成Makefile时由CMAKE_INSTALL_PREFIX定义;
- 目标文件系统在主机上的路径则需要在安装时由DESTDIR定义;

使用如下的命令编译并安装mips版本到主机的/path/to/mips/rtfs/usr目录下:

make
make install DESTDIR=/path/to/mips/rtfs/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值