背景:
这周先是因项目写了一篇:【软件移植】mysql-5.0.x在银河麒麟V10上的编译安装
现在又需要一个aarch64架构的mysql-5.5.x,所以再做一次移植。
准备:
1.银河麒麟V10桌面OS_飞腾版本
2.mysql源码:https://downloads.mysql.com/archives/community/
此处选择5.5.36版本的源码
编译:
1.解压并进入源码目录:
tar -xvf mysql-5.5.36.tar.gz
cd mysql-5.5.36
2.安装依赖:
# 根据开发环境来定,缺啥装啥,至少要有cmake
apt install cmake
3.修改代码:
mysql-5.5.x在arm上编译会报错,需要修改一点代码。(尝试了5.5.x的多个版本,报错都一样)
此处给出修改的patch,照着改就行
diff -urN a/mysql-5.5.36/client/mysql.cc b/mysql-5.5.36/client/mysql.cc
--- a/mysql-5.5.36/client/mysql.cc 2014-01-14 16:16:26.000000000 +0800
+++ b/mysql-5.5.36/client/mysql.cc 2023-06-29 16:48:09.000000000 +0800
@@ -2655,7 +2655,7 @@
mysql_free_result(fields);
break;
}
- field_names[i][num_fields*2]= '\0';
+ field_names[i][num_fields*2]= "";
j=0;
while ((sql_field=mysql_fetch_field(fields)))
{
diff -urN a/mysql-5.5.36/sql-common/client_plugin.c b/mysql-5.5.36/sql-common/client_plugin.c
--- a/mysql-5.5.36/sql-common/client_plugin.c 2014-01-14 16:16:26.000000000 +0800
+++ b/mysql-5.5.36/sql-common/client_plugin.c 2023-06-29 16:49:54.000000000 +0800
@@ -233,7 +233,7 @@
{
MYSQL mysql;
struct st_mysql_client_plugin **builtin;
-
+ va_list dummy;
if (initialized)
return 0;
@@ -249,7 +249,7 @@
pthread_mutex_lock(&LOCK_load_client_plugin);
for (builtin= mysql_client_builtins; *builtin; builtin++)
- add_plugin(&mysql, *builtin, 0, 0, 0);
+ add_plugin(&mysql, *builtin, 0, 0, dummy);
pthread_mutex_unlock(&LOCK_load_client_plugin);
@@ -293,6 +293,7 @@
mysql_client_register_plugin(MYSQL *mysql,
struct st_mysql_client_plugin *plugin)
{
+ va_list dummy;
if (is_not_initialized(mysql, plugin->name))
return NULL;
@@ -307,7 +308,7 @@
plugin= NULL;
}
else
- plugin= add_plugin(mysql, plugin, 0, 0, 0);
+ plugin= add_plugin(mysql, plugin, 0, 0, dummy);
pthread_mutex_unlock(&LOCK_load_client_plugin);
return plugin;
3.添加mysql用户和组:
groupadd mysql
useradd -g mysql mysql
4.配置项目,编译并安装
# cmake执行报错,一般是依赖不满足,缺啥装啥,然后重新执行即可。
cmake .
make -j4
make install # 默认安装在/usr/local/mysql目录。
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
cp support-files/my-medium.cnf /etc/my.cnf
# 建立数据库
scripts/mysql_install_db --user=mysql
chown -R mysql data
# 启动mysql后台服务
bin/mysqld_safe --user=mysql &
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