mysql交叉编译总结
2013-12-02 17:17
337 查看
版本:mysql-5.6.14.tar.gz
目标系统:基于linux的x86_64位系统
首先,在虚拟机里,正常配置(cmake ./ --xxx)、编译(sudo make)、安装(sudo make install)myslq。
为什么先要正常编译mysql?
(1)熟悉过程,整体的感受一下从配置到编译再到安装成功的过程;
(2)在后面的交叉编译过程中会用到正常编译生成的一些文件。
然后,创建一个交叉编译目录,把mysql解压的这个目录下。
第一步:修改mysql解压目录下的CMakeList.txt文件,在该文件的PROJECT(${MYSQL_PROJECT_NAME})之前添加
SET(CMAKE_SYSTEM_NAME Linux) #指定交叉编译目标系统(想要进行交叉编译,这一项是必配的,并且Linux要写对,不能写成linux,不然在cmake时会提示System is unknown to cmake,虽然配置可以通过,但是编译的时候会出很多奇怪的错)
SET(CMAKE_C_COMPILER xxx-gcc) #指定C交叉编译器
SET(CMAKE_CXX_COMPILER xxx-g++) #指定C++交叉编译器
SET(CMAKE_FIND_ROOT_PATH "/opt/interl") #指定交叉编译环境安装目录
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) #从来不在指定目录下查找工具程序
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) #只在指定目录下查找库文件
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) #只在指定目录下查找头文件
以上参数详细解释,可查看http://www.cmake.org/Wiki/CMake_Cross_Compiling
第二步:进行配置,生成Makefile
执行cmake . --XXX(参数)
第三步:进行编译
sudo make && sodu make install
在mysql编译生成的安装目录下有个文件是INSTALL_BINARY,这个就是mysql的安装说明书。(我觉得每个正规的软件都应该带有安装说明书,不然用户怎么知道这个玩意怎么搞)
编译过程中会遇到一些编译错误。例如:
1,在cmake过程中,发生
---- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
curses是mysql依赖的一个库,这个库也应该进行交叉编译。解决这个问题可在cmake后面添加-DCURSES_LIBRARY=/usr/lib/libcurses.so -DCURSES_INCLUDE_PATH=/usr/include/ncurses(或指定交叉编译该库目录和头文件目录)
2,在编译过程发生例如:/bin/sh: comp_err: Command not found之类的错误
可从正常编译过的mysql目录下查找该文件,并拷贝到/usr/bin/目录下
3,在编译过程中发生curses.h: No such file or directory的错误,
可在去编译目录下找到CMakeLists.txt,在该文件中的INCLUDE_DIRECTORY()中添加${CURSES_INCLUDE_PATH},如下
INCLUDE_DIRECTORY(
....
....
${CURSES_INCLUDE_PATH}
)
添加${CURSES_INCLUDE_PATH}的前提是在cmake的时候使用-DCURSES_INCLUDE_PATH指定的curses头文件目录
目标系统:基于linux的x86_64位系统
首先,在虚拟机里,正常配置(cmake ./ --xxx)、编译(sudo make)、安装(sudo make install)myslq。
为什么先要正常编译mysql?
(1)熟悉过程,整体的感受一下从配置到编译再到安装成功的过程;
(2)在后面的交叉编译过程中会用到正常编译生成的一些文件。
然后,创建一个交叉编译目录,把mysql解压的这个目录下。
第一步:修改mysql解压目录下的CMakeList.txt文件,在该文件的PROJECT(${MYSQL_PROJECT_NAME})之前添加
SET(CMAKE_SYSTEM_NAME Linux) #指定交叉编译目标系统(想要进行交叉编译,这一项是必配的,并且Linux要写对,不能写成linux,不然在cmake时会提示System is unknown to cmake,虽然配置可以通过,但是编译的时候会出很多奇怪的错)
SET(CMAKE_C_COMPILER xxx-gcc) #指定C交叉编译器
SET(CMAKE_CXX_COMPILER xxx-g++) #指定C++交叉编译器
SET(CMAKE_FIND_ROOT_PATH "/opt/interl") #指定交叉编译环境安装目录
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) #从来不在指定目录下查找工具程序
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) #只在指定目录下查找库文件
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) #只在指定目录下查找头文件
以上参数详细解释,可查看http://www.cmake.org/Wiki/CMake_Cross_Compiling
第二步:进行配置,生成Makefile
执行cmake . --XXX(参数)
第三步:进行编译
sudo make && sodu make install
在mysql编译生成的安装目录下有个文件是INSTALL_BINARY,这个就是mysql的安装说明书。(我觉得每个正规的软件都应该带有安装说明书,不然用户怎么知道这个玩意怎么搞)
编译过程中会遇到一些编译错误。例如:
1,在cmake过程中,发生
---- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
curses是mysql依赖的一个库,这个库也应该进行交叉编译。解决这个问题可在cmake后面添加-DCURSES_LIBRARY=/usr/lib/libcurses.so -DCURSES_INCLUDE_PATH=/usr/include/ncurses(或指定交叉编译该库目录和头文件目录)
2,在编译过程发生例如:/bin/sh: comp_err: Command not found之类的错误
可从正常编译过的mysql目录下查找该文件,并拷贝到/usr/bin/目录下
3,在编译过程中发生curses.h: No such file or directory的错误,
可在去编译目录下找到CMakeLists.txt,在该文件中的INCLUDE_DIRECTORY()中添加${CURSES_INCLUDE_PATH},如下
INCLUDE_DIRECTORY(
....
....
${CURSES_INCLUDE_PATH}
)
添加${CURSES_INCLUDE_PATH}的前提是在cmake的时候使用-DCURSES_INCLUDE_PATH指定的curses头文件目录
相关文章推荐
- mysqldump备份恢复
- MySQL用户授权
- 初学MySQL,列举一些小技巧
- 如何修改WAMP中mysql默认空密码
- 删除MySQL二进制日志的3种方法
- mysql无法通过ip地址链接
- mysql随笔
- mysql随笔
- LoadRunner访问Mysql数据库
- MySQL字段类型详解
- MYSQL数据文件--.frm文件(只有.frm文件时的表结构恢复)
- C#中MYSQL数据库连接并显示
- mysql存储引擎对应的锁
- MySQL同步 1032,1062异常
- MYSQL 随机选取几条数据
- mysql dbcp 自动断开
- mysql 索引
- mysql installer 无法选择install path
- windows下mysql忘记root密码的解决方法(方法二OK)
- 使用MySQL计划任务