6603|6

2144

帖子

3

TA的资源

五彩晶圆(中级)

楼主
 

helper2416_移植mysql_欢迎测试 [复制链接]

移植了一下mysql,相比之下比sqlite要大众一点关键是搞nodejs会用到,web什么的还是mysql主流,当然对于很多嵌入式应用sqlite足够了。

这个移植有点花时间,搞了大半天加上半个晚上,才弄好了。上传移植后的文件给大家玩,能做很多事情,比如和qt程序一起使用包含库和头文件就好了,直接用。

核心移植部分说明:
  1. 5)交叉编译MYSQL
  2.         1.1)配置configure
  3.                 # ./configure --host=arm-linux –-enable-static --with-named-curses-libs=/home/develop/helper2416/mysql/ncurses-5.6/ncurses-install/lib/libncurses.a  
  4.                         --prefix=/usr/local/mysql --without-debug --without-docs --without-man --without-bench --with-charset=gb2312 --with-extra-charsets=ascii,latin1,utf8
  5.         这里注意libncurses.a库的安装目录,交叉编译的MYSQL也安装到了/usr/local/mysql,这个是因为我在编译PC版本的MYSQL时只是使用了make并没有make install.
  6.         如果你也需要使用ubuntu下面的MYSQL,并且当时使用了make install,这里就需要注意目录问题.
  7.        
  8.         1.2)定义STACK_DIRECTION
  9.                 # vim sql/sql_parse.cc
  10.         在大约5432行添加
  11.                 #define STACK_DIRECTION                 1
  12.        
  13.         1.3)直接开始运行make编译源代码
  14.                 # make
  15.         出现错误:
  16.                 make[2]: Leaving directory 'xxx'
  17.                 ./gen_lex_hash > lex_hash.h-t  /bin/sh:
  18.                 ./gen_lex_hash: cannot execute binary file
  19.         这个时候就需要将刚才我们编译好的PC版本的$MYSQL-PC\sql\目录下面的gen_lex_hash,然后cp到现在交叉编译时对应的$MYSQL-ARM\sql\目录覆盖即可.
  20.         注意,覆盖完成后不要急于make,这时输入如下命令:
  21.                 # touch –m sql/gen_lex_hash
  22.                 # make
  23.         上面的命令是改变gen_lex_hash的最后修改时间,这样做的目的是告诉编译器gen_lex_hash已经是最新的了,不要重新生成它.
  24.         否则编译器检查gen_lex_hash和它的依赖文件的最后修改时间会发现gen_lex_hash比它的依赖文件更旧,就会重新交叉编译生成它,这样不管我们做几次覆盖的工作错误都还会再现.
  25.        
  26.         1.4)提示错误
  27.                 # vim Makefile
  28.         屏蔽如下内容:
  29.                 do_abi_check:
  30.                 #        set -ex; \
  31.                 #        for file in $(abi_headers); do \
  32.                 #                 arm-linux-gcc -E -nostdinc -dI -DMYSQL_ABI_CHECK \
  33.                 #                          -I$(top_srcdir)/include \
  34.                 #                          -I$(top_srcdir)/include/mysql \
  35.                 #                          -I$(top_srcdir)/sql \
  36.                 #                          -I$(top_builddir)/include \
  37.                 #                          -I$(top_builddir)/include/mysql \
  38.                 #                          -I$(top_builddir)/sql \
  39.                 #                                         $file 2>/dev/null | \
  40.                 #                          /bin/sed -e '/^# /d' \
  41.                 #                                    -e '/^[         ]*$/d' \
  42.                 #                                    -e '/^#pragma GCC set_debug_pwd/d' \
  43.                 #                                    -e '/^#ident/d' > \
  44.                 #                                               $(top_builddir)/abi_check.out; \
  45.                 #                          /usr/bin/diff -w $file.pp $(top_builddir)/abi_check.out; \
  46.                 #                          /bin/rm $(top_builddir)/abi_check.out; \
  47.                 #        done
  48.         1.5)最后执行安装命令即可,权限问题需要使用sudo
  49.                 # sudo make install
  50.         注意由于需要使用arm-linux-rainlib命令,所以需要使用export PATH='$PATH:/cross_compile_path'
复制代码


来看一下移植后运行的东西吧

版本测试:


启动mysql


运行mysql


mysql-help


mysql简单测试


说说配置吧,这个对新手来说也有点复杂,关键是要搞清楚调理性

一、准备工作
1、拷贝交叉编译好的文件夹到板子上对应的路径下,/usr/local/mysql目录下的bin/+libexec/+share/
2、修改相关执行文件的权限
3、将lib相关的库拷贝到板子中的lib目录下,注意只要个别,不需要全部。

二、ARM配置
1、将/usr/local/mysql/share/mysql/mysql.server拷贝到/etc/init.d/mysql.server
  1. # cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql.server
复制代码



2、添加配置文件
  1. # vi /etc/my.conf
复制代码

  1. [mysqld]
  2. datadir=/usr/local/mysql/mysql_data
  3. socket=/tmp/mysql.sock

  4. user=root
  5. #Default to using old password format for compatibility with mysql 3.x

  6. #clients (those using the mysqlclient10 compatibility package).

  7. old_passwords=1

  8. [mysqld_safe]
  9. log-error=/var/log/mysqld.log
  10. pid-file=/var/lib/mysql/camelshoko.pid
复制代码



3、版本测试
  1. # mysql -V
  2. mysql  Ver 14.14 Distrib 5.1.51, for unknown-linux-gnu (arm) using  EditLine wrapper
复制代码



4、安装数据库
  1. # mysql_install_db -u root --force
复制代码

  1. Installing MySQL system tables...
  2. OK
  3. Filling help tables...
  4. OK

  5. To start mysqld at boot time you have to copy
  6. support-files/mysql.server to the right place for your system

  7. PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
  8. To do so, start the server, then issue the following commands:

  9. /usr/local/mysql/bin/mysqladmin -u root password 'new-password'
  10. /usr/local/mysql/bin/mysqladmin -u root -h localhost password 'new-password'

  11. Alternatively you can run:
  12. /usr/local/mysql/bin/mysql_secure_installation

  13. which will also give you the option of removing the test
  14. databases and anonymous user created by default.  This is
  15. strongly recommended for production servers.

  16. See the manual for more instructions.

  17. You can start the MySQL daemon with:
  18. cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

  19. You can test the MySQL daemon with mysql-test-run.pl
  20. cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl

  21. Please report any problems with the /usr/local/mysql/bin/mysqlbug script!
复制代码



5、启动MySQL服务
  1. # /etc/init.d/mysql.server start
  2. Starting MySQL.. SUCCESS!
复制代码



6、MySQL测试
  1. # mysql
  2. Welcome to the MySQL monitor.  Commands end with ; or \g.
  3. Your MySQL connection id is 1
  4. Server version: 5.1.51 Source distribution

  5. Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  6. This software comes with ABSOLUTELY NO WARRANTY. This is free software,
  7. and you are welcome to modify and redistribute it under the GPL v2 license

  8. No entry for terminal type "vt100";
  9. using dumb terminal settings.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

  11. mysql>
复制代码



后面会分享如何用nodejs+mysql搭建自己的家庭网关,节点暂时确定使用wifi+fr5969,我的板子也有移植了wifi了,可以直接交互数据。

游客,如果您要查看本帖隐藏内容请回复


usr-local-mysql.zip (29.69 MB, 下载次数: 46)

最新回复

学习了!  详情 回复 发表于 2015-5-30 07:35
点赞 关注
个人签名电工

回复
举报

554

帖子

0

TA的资源

版主

沙发
 
厉害!
 
个人签名My dreams will go on...
http://www.jyxtec.com
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
响应陈大号召来顶贴
 
 
 

回复

187

帖子

1

TA的资源

一粒金砂(中级)

4
 
学习了
 
 
 

回复

496

帖子

18

TA的资源

一粒金砂(高级)

5
 
感谢分享!!!顶!!!
 
个人签名相由心生,境随心转,一切法从心想生。
 
 

回复

33

帖子

0

TA的资源

一粒金砂(中级)

6
 
强悍,学习了!
 
个人签名我的世界我做主
 
 

回复

18

帖子

0

TA的资源

一粒金砂(中级)

7
 
学习了!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表