红联Linux门户
Linux帮助

UBUNTU mysql5.7.10交叉编译总结

发布时间:2016-02-28 09:58:17来源:linux网站作者:li13888557180

折腾了两周时间,终于把mysql5.7.10交叉编译完成。

平台:ubuntu 15.10 64位裸机,初次安装,只为编译mysql,mysql版本5.7.10,交叉编译链友善之臂的arm-linux-gcc 4.4.3,ncurses 5.9,boost 1.59.0,cmake 3.2

源文件路径:mysql-arm,mysql-x86-64,准备两套mysql源码,两套源码放在/root/目录下


一:安装cmake。

比较简单,apt-get install cmake


二:安装boost

下载boot1.59.0,按照下面方法编译安装

(1)配置boost

./bootstrap.sh

(2)编译安装

./b2 install


二.一:编译.mysql-x86-64
cd /root/mysql-x86-64/BUILD
./compile-pentium64
编译成功没有错误。留作备用。


三:安装交叉工具链
照友善之臂的工具链安装方法,配置好环境变量,采用arm-linux-gcc -v 测试可以看到版本号为止!网上内容很多!


四、交叉编译ncuses。

tar xvf ncurses-5.9.tar.gz
cd ncurses-5.9
CC=arm-linux-gcc CXX=arm-linux-g++ ./configure --host=arm-linux-gnu --prefix=/usr
make
make install DESTDIR=/usr/local/arm/libncurses

正常应该很顺利。


五:交叉编译

(1)将/root/mysql-x86-64/BUILD/extra里面的comp_err拷贝到/usr/bin目录下。

(2)配置/root/mysql-arm/CMakeLists.txt

在/root/mysql-arm/CMakeLists.txt的开头找到“IF(WIN32)",上面添加下面内容

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_SYSTEM_VERSION 1)
SET(CMAKE_CROSSCOMPILING 1)
#或交叉编译器使用绝对地址
SET(CMAKE_C_COMPILER "arm-linux-gcc")
#指定C++交叉编译器
#指定交叉编译环境安装目录...
SET(CMAKE_FIND_ROOT_PATH "...")
#从来不在指定目录下查找工具程序
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
#只在指定目录下查找库文件
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
#只在指定目录下查找头文件
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
#添加头文件搜索路径
SET(CMAKE_LIBRARY_PATH /usr/local/arm/ncurses/usr/lib)
INCLUDE_DIRECTORIES(/usr/local/include)
set(BOOST_INCLUDE_DIR /usr/local/include)
set(BOOST_LIBRARY_DIR /usr/local/lib)
set(LOCAL_BOOST_DIR /usr/local/boost)
SET(STACK_DIRECTION 1)
SET(WITH_UNIT_TESTS OFF)
SET(WITH_EMBEDDED_SERVER TRUE)
#添加库文件搜索路径
LINK_DIRECTORIES(/usr/local/lib)

上面这段是对/root/mysql-arm/CMakeLists.txt的修改。

(3)在/root/mysql-arm目录下:

执行下面的命令:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/arm/mysql -DMYSQL_UNIX_ADDR=/usr/local/arm/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk  -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/arm/mysql/data/ -DSTACK_DIRECTION=1 -DCURSES_LIBRARY=/usr/local/arm/ncurses/usr/lib/libncurses.a -DCURSES_INCLUDE_PATH=/usr/local/arm/ncurses/usr/include -DWITH_MYISAM_STORAGE_ENGINE=1

如果出错,按照执行过程中的提示修改。每次修改后执行前要执行下面命令删除CMakeCache.txt

rm /root/mysql-arm/CMakeCache.txt

(4)make

执行make过程中,出现几个问题,一个是部分intptr类型要更改成为long类型!第二个问题出现文件格式不对,如果ncurses安装不正确就会报这个问题。

(5)make install


六:安装到开发板上,这个么,我还没做!


本文永久更新地址:http://www.linuxdiyf.com/linux/18459.html