1. 编译包下载路径
1.1 mysql-server-5.5 的下载
mysql 有自己的官网和其他gitlab的下载路径,但可能速度过慢或者不好找到源码,我是使用gitee的路径下载的。
mysql 5.5.62 : gitee连接
1.2 ncueses 库
mysql依赖该ncueses库,所有首先需要编译该库。
官网地址
http://ftp.gnu.org/pub/gnu/ncurses/
下载地址
http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
2. 编译ncurses 库
mysql依赖该ncueses库,所有首先需要编译该库。
执行如下命令:
tar zxvf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure CC=arm-linux-gnu-gcc --prefix=$PWD/out --host=arm-linux --with-shared
注意:该命令需要根据自己交叉编译工具自行修改
make
3. 编译mysql库
3.1 编译X86版本的mysql
这里有人就问了,我们是交叉编译ARM 版本的mysql, 为啥还要编译X86版本的呢? 有移植经验的同学会知道: 编译过程中要生成一些工具,并在编译的时候要执行。mysql 也一样, 编译的时候需要执行以下6 个工具来完成编译:
extra/comp_err
scripts/comp_sql
sql/gen_lex_hash
sql/gen_lex_token
extra/protobuf/protoc
libmysql/libmysql_api_test
注意:前三个工具是5.5 版本中有,后三个工具在5.7版本中才有,没有测试过其他版本,读者可根据自己的情况判断。该文件是需要编译完成后拷贝到到交叉编译的源码中。
其他人可能会使用cmake ./ 直接编译,这样会导致编译出来的文件和源码混合到一起了,我个人的习惯是创建一个build目录,将编译过程中产生的文件都放到build中。所有此处运行的命令如下:
tar -zxvf mysql-5.5-62.tar.gz
mkdir build #建一个单独的文件夹来进行编译
cd build
cmake …
make
出错问题:
报错1:
– Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:83 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
解决1:
sudo apt install libncurses5-dev
报错2:
– Library mysqlclient depends on OSLIBS -lpthread;m;dl
Warning: Bison executable not found in PATH
CMake Error at cmake/bison.cmake:78 (MESSAGE):
Bison (GNU parser generator) is required to build MySQL.Please install
bison.
Call Stack (most recent call first):
sql/CMakeLists.txt:207 (RUN_BISON)
解决2:
sudo apt install bison
3.2 交叉编译
3.2.1 交叉编译之前
- 交叉编译之前需要将上一步编译完成的工具拷贝到 /usr/bin目录下,不然会出如下错误:
./gen_lex_hash: 1: ./gen_lex_hash: Syntax error: word unexpected (expecting ")")
sql/CMakeFiles/GenServerSource.dir/build.make:69: recipe for t