背景:
mysql-5.0.x没有aarch64架构的二进制安装包,所以需要从源码进行移植。
准备:
1.银河麒麟V10桌面OS_飞腾版本
2.mysql源码:https://downloads.mysql.com/archives/community/
此处选择5.0.24版本的源码
编译:
1.解压并进入源码目录:
tar -xvf mysql-5.0.24.tar.gz
cd mysql-5.0.24
2.安装autotools-dev,并替换架构识别相关文件【#1】
# 说明:mysql版本太老,不识别aarch64架构
# 用autotools-dev提供的config.guess和config.sub文件替换源码中的
# 可以解决configure阶段架构不支持的问题。
apt install autotools-dev
cp -af /usr/share/misc/config.* ./
3.添加mysql用户和组:
groupadd mysql
useradd -g mysql mysql
4.配置项目,编译并安装
CXXFLAGS="-std=c++98" ./configure --prefix=/usr/local/mysql
make -j4
make install
cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql
./bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
chgrp -R mysql .
./bin/mysqld_safe --user=mysql &
编译参考源码目录下INSTALL-SOURCE文件,但需要改动。配置项目时,需要前面加上 CXXFLAGS="-std=c++98" 。【#2】
如果系统中没有安装其他版本的mysql,运行./configure时可以选择不加--prefix选项。【#3】
5.使用方法
要使用mysql,需要先将mysql相关路径加入系统PATH和LD_LIBRARY_PATH。
PATH和LD_LIBRARY_PATH的修改,可以直接export,也可以加入到/etc/目录下的profile、bashrc等文件中。
# 直接export,关机后失效。也可以写到/etc/profile或/etc/bashrc中
export PATH=$PATH:/usr/local/mysql/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql
如果不想改动系统环境变量或者保留系统原有的mysql,也可以每次使用前,加上mysql的路径。类似下面的两种用法:
PATH=/usr/local/mysql/bin:$PATH LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:$LD_LIBRARY_PATH mysqladmin create xxxx
# 或
LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:$LD_LIBRARY_PATH /usr/local/mysql/bin/mysqladmin create xxxx
【#1】直接运行./configure会出现报错,是因为mysql-5.x只认识arm不认识aarch64架构。这些架构识别相关的内容是源码中config.guess和config.sub提供的,属于autotools的内容。我们安装当前系统匹配的autotools工具,并从中复制对应的文件到当前工程,就能解决架构不识别问题
【#2】make编译过程中可能会出现:“mysqld.cc:5995:1: error: narrowing conversion of ‘18446744073709551615’ from ‘ulong’ {aka ‘long unsigned int’} to ‘longlong’ {aka ‘long int’} [-Wnarrowing]”,这是因为系统默认使用c++11,mysql-5.x版本较老,需要c++98的规则来编译。所以需要手动指定CXXFLAGS
【#3】--prefix选项是指定make install时候的安装目录,这里加上是为了不覆盖系统自带的高版本mysql