编译arm开发板上用的mysql

编译arm开发板上用的mysql
编译Hi3359A开发板上用的mysql
开发环境
编译过程
编译Ubuntu上的mysql
交叉编译ncurse-6.1
交叉编译mysql
部署mysql
1、拷贝文件
2、配置并运行mysql
开发环境
ubuntu 16.04 server版(已安装编译链 aarch64-himix100-linux)
mysql 5.7.26 https://dev.mysql.com/downloads/file/?id=485749
参考资料
https://blog.csdn.net/changqing1990/article/details/83027384
https://blog.csdn.net/fhyocean/article/details/74960005
https://github.com/velarn/CrossCompliteArmMysql
编译过程
编译Ubuntu上的mysql
解压MySQL安装包(https://dev.mysql.com/downloads/file/?id=485749)
tar -zxf mysql-boost-5.7.26.tar.gz
先编译pc上的版本,有移植经验的同学会知道: 编译过程中要生成一些工具,并在编译的时候要执行。 mysql 也一样, 编译的时候需要执行以下6 个工具来完成编译。编译arm版时需要在已编译好的mysql-pc/BUILD目录拷贝这些文件
extra/comp_err

scripts/comp_sql

sql/gen_lex_hash

sql/gen_lex_token

extra/protobuf/protoc

libmysql/libmysql_api_test

 cd mysql-5.7.26/BUILD 目录里,使用 compile-pentium64 脚本执行编译(3359用的64位的)
 ./compile-pentium64 

初次编译时会报错找不到bootst库在这里插入图片描述
在这里插入图片描述
根据错误提示修改compile-pentium64文件
在这里插入图片描述
删掉原先的cmake文件后重新执行compile文件,会自动下载boost库到BUILD目录,网速不好的可以在国内镜像站下载一个1.59版本的放到相同目录,接着继续编译。
中途会提示找不到CURSES_LIBRARY 和pkg-config,按提示进行安装即可,接着继续编译等待完成即可
在这里插入图片描述
在这里插入图片描述
交叉编译ncurse-6.1
下载ncurses-6.1(http://mirrors.ustc.edu.cn/gnu/ncurses/) 并解压(5.9版本不支持aarch64会报错,需要修改配置文件,过于麻烦)
在这里插入图片描述
configure并编译
make
make install DESTDIR=path

install安装时会有报错,错误如下,只要安装目录lib文件夹中有.a文件生成就可以不管它
在这里插入图片描述
交叉编译mysql
1、将mysql目录改名如 mysql-pc 留作备用,重新解压mysql.tar.gz
2、 在解压目录中新建一个BUILD_ARM目录,新建一个compile-arm文件,内容如下
在这里插入图片描述
3、 执行compile-arm 文件,这个步骤应该不会出问题
4、接着执行make,过程中会报一些错误,一个个解决即可在这里插入图片描述

copy extra/comp_err文件并touch,接着继续make

在这里插入图片描述
拷贝 libmysql/libmysql_api_test

在这里插入图片描述
拷贝 sql/gen_lex_hash

很不幸出现了新的错误 “#error Unsported Platform” ,思路在开头的另两遍文章里有讲解,此处直接展示解决方法
在这里插入图片描述
显然错误产生的原因是没有宏定义才导致的。os0atomic.ic的宏定义中有HAVE_IB_GCC_ATOMIC_COMPARE_EXCHANGE,IB_STRONG_MEMORY_MODEL这两个宏定义。
我们在看看os0atomic.h的内容,os0atomic.h开头内容如下:

#endif /* _WIN32 */

#if defined __i386__ || defined __x86_64__ || defined _M_IX86 \
    || defined _M_X64 || defined __WIN__

#define IB_STRONG_MEMORY_MODEL

#endif /* __i386__ || __x86_64__ || _M_IX86 || _M_X64 || __WIN__ */

我们修改成
在这里插入图片描述

# ifdef HAVE_IB_ATOMIC_PTHREAD_T_GCC
#if defined(HAVE_GCC_SYNC_BUILTINS)
# define os_compare_and_swap_thread_id(ptr, old_val, new_val) \
os_compare_and_swap(ptr, old_val, new_val)
#else
UNIV_INLINE
bool
os_compare_and_swap_thread_id(volatile os_thread_id_t* ptr, os_thread_id_t old_val, os_thread_id_t new_val)
{
return __atomic_compare_exchange_n(ptr, &old_val, new_val, 0,
__ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
}

修改成
在这里插入图片描述
接着继续编译
在这里插入图片描述
拷贝 scripts/comp_sql
在这里插入图片描述
拷贝 sql/gen_lex_token
在这里插入图片描述
拷贝 extra/protobuf/protoc 等待编译完成即可,接着install到指定目录

make install DESTDIR=/mnt/lsx/mysql-5.7.26/install_arm

1
部署mysql
1、拷贝文件
将install_arm目录中的mysql上传到目标机器需要安装mysql的位置在目标机器mysql目录下创建data文件夹。

2、配置并运行mysql
执行以下脚本:(根据实际情况调整目录)

#!/bin/bash
MYSQL_BASE=/usr/local/mysql
echo "Setup the mysql-5.7.26....."
 
 
echo "Create the data path ${MYSQL_BASE}/data..."
mkdir -p ${MYSQL_BASE}/data
 
echo "Initailize the data directory and create the MySQL grant tables"
${MYSQL_BASE}/bin/mysqld --user=root --basedir=${MYSQL_BASE} --datadir=${MYSQL_BASE}/data  --initialize-insecure ##--initialize
 
echo "copy mysqld config file to /etc/ "
cp my.cnf  /etc/my.cnf
 
echo "Create link to /usr/bin"
ln -s ${MYSQL_BASE}/bin/mysqld  /usr/bin/mysqld
ln -s ${MYSQL_BASE}/bin/mysql  /usr/bin/mysql
ln -s ${MYSQL_BASE}/bin/my_print_defaults  /usr/bin/my_print_defaults
ln -s ${MYSQL_BASE}/bin/mysqladmin  /usr/bin/mysqladmin
ln -s ${MYSQL_BASE}/bin/mysqldump  /usr/bin/mysqldump
 
echo "Starting and Stopping MySQL Automatically.... "
cp ${MYSQL_BASE}/support-files/mysql.server  /etc/init.d/mysqld
/usr/sbin/update-rc.d  mysqld defaults 98
 
echo "No passwd for mysql, you can use the following command to login: "
echo "mysql -u root --skip-password "
 
echo "[Done]"
 
exit 0;

脚本中涉及到my.conf, 你可以按照自己需求进行配置,下面给出一个demo:

########################################################
###### mysql configure file 
########################################################
 
[mysqld]
user=root
port=3306
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
pid-file=/var/run/mysqld.pid
general-log-file=/var/log/mysqld.log
slow-query-log-file=/var/log/mysqld.log
log-error=/var/log/mysqld.log
 
[client]
port=3306
socket=/tmp/mysql.sock

通过以上步骤,就完成了相关的配置,接下来就可以直接运行mysql 客户端进行相关测试了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值