主题 : Tiny6410平台MySQL-5.5.24交叉编译图文版教程 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 34962
精华: 2
发帖: 36
金钱: 285 两
威望: 57 点
贡献值: 2 点
综合积分: 112 分
注册时间: 2010-12-23
最后登录: 2012-06-28
楼主  发表于: 2012-05-31 13:09

 Tiny6410平台MySQL-5.5.24交叉编译图文版教程

管理提醒: 本帖被 wuweidong 设置为精华(2012-06-01)
自从mysql升级到5.5以上后,编译方式从configure变成cmake,导致网上的很多交叉编译方法失效。本文基于最新版本的mysql-5.5.24给出交叉编译方法,为网上最新教程
本文完全由本人所原创,ARM9之家为首发站。由于本文众多图片链自本人网站http://sjwt.vicp.cc:8080/,且此站是基于Tiny6410搭建的LAMP小型服务器,运行时间为6:00~23:00。因此如果看不到图片请在以上时间段内再来访问。
Apache和PHP交叉编译的图文版教程在日后会陆续放出。
发现粘贴过来格式有点不正常,原文地址在:http://sjwt.vicp.cc:8080/post-229.html

一、下载源代码
登陆Mysql官网

进入download页面

选择下载类型

选择源码下载

拉到最下面选择tar格式

这时可能需要登陆注册一个账号,我直接登陆略过
进入下载页面

选择台湾的服务器,下载速度挺快的

二、交叉编译
一些工作环境
属性属性值
源码目录/home/workspace/SourceCode
交叉编译目录/home/workspace/CorssComp/mysql-5.5.24
本地编译目录/home/workspace/LocalComp/mysql-5.5.24
交叉编译器版本arm-linux-gcc 4.5.1 v6
本地编译器版本gcc 4.7.0
操作系统ArchLinux 3.0
系统安装包base;base-devel;
1、解压源码到编译目录

2、安装cmake配置工具
  A、下载源码

从cmake的官网下载,官网链接:
http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz
  B、解压

  C、配置

然后就是等待一段漫长的时间
  D、编译

又是一段漫长的时间
  E、安装

安装过程还算比较快
3、配置Mysql进行交叉编译
  A、编译PC版本(个别文件在ARM版本编译过程有用)
解压

配置

开始编译

注意make完了之后不需要make install哦
  B、编译ARM版本配置


配置界面,一开始为空

单击c键先进行默认初始配置

默认配置完成后的界面

单击e键之后出现以下配置选项

对里面的选项根据自己需要进行修改

单击t键进入高级配置模式,对编译器选项进行修改


[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image199_thumb.png[/img][img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image205_thumb.png[/img]
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image208_thumb.png[/img]

后面的基本不用修改了
单击c键重新生成新的配置
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image93_thumb.png[/img]
显示如下表示配置完毕
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image96_thumb.png[/img]
单击e键退出
但是编译器检测到两项新的内容并更改
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image102_thumb.png[/img]
因此需要重新单击c键再次配置
很快就配置好了,显示如下画面
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image105_thumb.png[/img]
单击e退出,表示可以真正生成配置文件了
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image108_thumb.png[/img]
单击g开始产生配置文件
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image111_thumb.png[/img]
OK,激动人心的编译时刻到来
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image114_thumb.png[/img]
当编译到这一步的时候发生错误
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image117_thumb.png[/img]
这时就需要我们从PC版中将相应的可执行文件复制过来
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image120_thumb.png[/img]
继续make
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image123_thumb.png[/img]
出现错误
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image129_thumb.png[/img]
这是由于arm-linux-gcc编译器的一个bug所造成的,需要我们修改代码
插入dummy
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image153_thumb.png[/img]
将0改成dummy
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image147_thumb.png[/img]
插入dummy
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image156_thumb.png[/img]
将0改成dummy
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image150_thumb.png[/img]
继续make
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image135_thumb.png[/img]
再次二进制文件执行出现错误
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image159_thumb.png[/img]
文件复制过来
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image163_thumb.png[/img]
继续make
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image166_thumb.png[/img]
依然出现二进制文件执行出现错误
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image169_thumb.png[/img]
文件复制过来
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image178_thumb.png[/img]
继续make
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image181_thumb.png[/img]
十分顺利的编译完成了,接下来安装
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image184_thumb.png[/img]
至此已经编译安装完成
[img]http://sjwt.vicp.cc:8080/content/uploadfile/wlwfiles/SJWTSTUDIO/MySQL_72AC/image211_thumb.png[/img]
三、在ARM上的安装
将/sdcard/mysql目录里的所有文件拷贝到ARM机对应的/sdcard/mysql目录中
1、创建my.cnf配置文件

# mkdir /sdcard/mysql/log 
# mkdir /sdcard/mysql/etc 
# cp support-files/my-medium.cnf /sdcard/mysql/etc/my.cnf

2、初始化数据库

执行前需赋给scripts/mysql_install_db文件执行权限 
# chmod 755 scripts/mysql_install_db 
# scripts/mysql_install_db --user=mysql --basedir=/sdcard/mysql/ --datadir=/sdcard/mysql/data/

3、创建管理MySQL数据库的shell脚本

# mkdir /sdcard/mysql/init.d 
# cp support-files/mysql.server /sdcard/mysql/init.d/mysql 
赋予shell脚本可执行权限: 
# chmod +x /sdcard/mysql/init.d/mysql

4、启动MySQL:

# /sdcard/mysql/init.d/mysql start

运行mysql的时候,会提示缺少一些库文件*.so ,需要到你编译的计算机系统下寻找相应的库文件拷贝到ARM机对应的目录中
5、通过命令行登录管理MySQL服务器(提示输入密码时直接回车):

# /sdcard/mysql/bin/mysql -u root -p -S /tmp/mysql.sock 
输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678): 
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345678'; 
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '12345678';

6、为root帐户设置初始密码

# /sdcard/mysql/bin/mysqladmin -u root password 'new-password'

7、删除本机匿名连接的空密码帐号

/sdcard/mysql -u root -p 'new-password' 
mysql>use mysql; //选择系统数据库mysql 
mysql>select Host,User,Password from user; //查看所有用户

mysql>delete from user where user='';                  (删除user用户) 
mysql>delete from user where password='';               (删除user用户) 
mysql>delete from user where host='';                     (删除user用户) 
mysql>drop database test;             (删除默认的test数据库) 
mysql>flush privileges;               (刷新mysql的缓存,让以上设置立即生效) 
mysql>select Host,User,Password from user; //确认密码为空的用户是否已全部删除 
mysql>exit;
[ 此帖被dick在2012-05-31 13:24重新编辑 ]