日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 嵌入式_MySql移植到嵌入式Linux平台

發(fā)布時間:2024/9/19 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 嵌入式_MySql移植到嵌入式Linux平台 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在做考勤機系統(tǒng),硬件采用的cortex-A8,哈哈,其實是有點浪費的,2410就可以的。所以就要考慮到考勤數(shù)據(jù)的存儲問題,本來是打算用sqlite數(shù)據(jù)庫存儲的,可是后來發(fā)現(xiàn),這個數(shù)據(jù)庫只是一個本地數(shù)據(jù)庫,無法進行聯(lián)網(wǎng)訪問,這樣的話,服務器上的數(shù)據(jù)客戶端是不能通過遠程連接數(shù)據(jù)庫的方法連接訪問的,但是還可以通過其他方法,比如socket的方法,服務器把客戶端請求的數(shù)據(jù)發(fā)送給客戶端,不過感覺這樣比較麻煩,所有后面采樣MySql數(shù)據(jù)庫,這樣就涉及到MySql數(shù)據(jù)庫的移植了。

在網(wǎng)上搜索了下,找到一篇文章,我就是按照該方法一步步的成功移植了MySql-5.1.51版本,以下是原文

MySQL沒有專門針對ARM的版本,移植到ARM沒有官方文檔可參考,因此,暫時參考這樣一篇文檔:

http://blog.chinaunix.net/space.php?uid=9701860&do=blog&id=285428,因為MySQL5.5之后,編譯是用的cmake不再使用./configure,因此,只好倒回支持./configure的版本來用,這里使用了文檔上的5.1.51版本。

進行如下步驟完成移植:

1) 下載mysql5.1.51:

http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-5.1/mysql-5.1.51.tar.gz

2) 安裝編譯器:用的是EmbedSky提供的4.3.3的編譯器。gcc之類的都是Fedora14自帶的。

3) 編譯PC版本的mysql備用

a) 解壓mysql-5.1.51到/opt/mysql-5.1.51: tar zxvf mysql-5.1.51.tar.gz

b) cd mysql-5.1.51

c) ./configure -prefix=/usr/local/mysql

d) make 注意,這里無需運行make install,以為主要是為了用pc版本里的gen_lex_hash庫。

e) 將文件夾mysql-5.1.51改名為mysql-5.1.51-pc備用。(將gen_lex_hash單獨備份保存一下)

f) 文檔上說這里會出錯,但我在編譯的過程中沒有碰到,唯一的問題是編譯了arm版本的,重新通過改文件夾的名字回頭編譯pc版本的時候會報錯。

4) 編譯arm版本的ncurses

a) 下載ncurses-5.9.tar.gz:ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz

b) 解壓到/opt/中:tar zxvf ncurses-5.9.tar.gz c) cd ncurses-5.6

d) ./configure –host=arm-linux -prefix=/usr/local/ncurse –enable-static

e) make

f) make install

之所以安裝這個,是因為對mysql的交叉編譯過程需要該庫的支持

5) 編譯arm版本的mysql

a) tar zxvf mysql-5.1.51.tar.gz

b) cd mysql-5.1.51

c) 修改配置文件:打開configure,可以使用gedit configure

分別在第26453行、 48175行、 48282行、 48485行附近有類似代碼:

if test "$cross_compiling" = yes; then

{ { $as_echo "$as_me:$LINENO: error: in `$ac_pwd':" >&5 $as_echo "$as_me: error: in `$ac_pwd':" >&2;}

{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross

compiling See `config.log' for more details." >&5

$as_echo "$as_me: error: cannot run test program while cross compiling See `config.log' for more details." >&2;}

{ (exit 1); exit 1; }; }; } Else 將這些代碼改為:

if test "$cross_compiling" = yes; then echo “skip …..!”

#{ { $as_echo "$as_me:$LINENO: error: in `$ac_pwd':" >&5 #$as_echo "$as_me: error: in `$ac_pwd':" >&2;}

#{ { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling See `config.log' for more details." >&5

#$as_echo "$as_me: error: cannot run test program while cross compiling See `config.log' for more details." >&2;}

#{ (exit 1); exit 1; }; }; } Else 一定注意,這樣的代碼有4部分,要全部改掉。

d) 配置,直接套用了人家的配置方式:

configure ./configure --host=arm-linux –-enable-static --with-named-curses-libs=/usr/local/ncurse/lib/libncurses.a --prefix=/usr/local/mysql --without-debug --without-docs --without-man --without-bench --with-charset=gb2312 --with-extra-charsets=ascii,latin1,utf8

e) 修改opt/mysql-5.1.51/sql/sql_parse.cc:在5646行之前添加#define STACK_DIRECTION 1

如果修改該語句,則會出現(xiàn)如下錯誤:sql_parse.cc:5646:21: operator '

注意:這里的“#define STACK_DIRECTION 1”一句,不能隨便加在sql_parse.cc的開頭處,而應該根據(jù)出錯信息的提示添加在相應的行上,我所遇到的行號和別人文檔上所遇到的行號并不相同。

f) 復制PC版本的gen_lex_hash文件到當前文件夾: cp? /opt/mysql-5.1.51-pc/sql/gen_lex_hash sql/ touch –m sql/gen_lex_hash

cp? /opt/mysql-5.1.51-pc/sql/ lex_hash.h sql/ touch –m sql/ lex_hash.h

否則會出現(xiàn)錯誤:

make[2]: Leaving directory `/opt/mysql-5.5.3-m3/sql' ./gen_lex_hash > lex_hash.h-t

/bin/sh: ./gen_lex_hash: cannot execute binary file 因為arm版的無法在pc上運行。

注意:別人的文檔上說只要拷貝gen_lex_hash即可,但我試了好多次,都仍然會出現(xiàn)上面的報錯信息,把lex_hash.h也拷貝過來后,就不再報錯了。另外,touch一定要做,原因就是讓編譯器不要再編譯覆蓋拷貝過來的文件了。

g) Make

h) Make install

6) 移植相應文件到ARM平臺

a) 拷貝pc的/usr/local/mysql到開發(fā)板的相同目錄 我使用了nfs調(diào)試,所以需要使用如下指令:

cp -r /usr/local/mysql /opt/EmbedSky/root_nfs/usr/local/mysql

b) 把編譯出的arm的mysql庫打包備份一下,考到主機的目錄里:

tar –zcvf mysql-arm-5.1.51.tar.gz mysql

c) 到源碼中拷貝配置文件模版? Copies files from one location to another. 配置文件模版)

cp /opt/mysql-5.1.51/support-files/my-medium.cnf /opt/EmbedSky/root_nfs/etc/my.cnf

(這里的目錄指的是nfs調(diào)試的路徑設置),這里的my.cnf存放的路徑是按照手冊上的建議,前面編譯pc版本的MySQL中所述的路徑并非全局配置。

該文檔的注釋中說:

“# You can copy this file to /etc/my.cnf to set global options, mysql-data-dir/my.cnf to set server-specific options (in this installation this directory is /usr/local/mysql/var) or ~/.my.cnf to set user-specific options.”

該配置文件的修改詳見mysql5.1的英文手冊的4.2.3.3. Using Option Files節(jié)中的敘述。

數(shù)據(jù)目錄是在:/var/lib/mysql 安裝目錄是在:/usr/local/mysql

試圖反注釋了關于InnoDB的一些配置,其它沒有動。但是修改了這些設置后,報錯,于是又改了回來。

d) 運行mysql_install_db(參見手冊的2.13. Post-Installation Setup and Testing)

cd /usr/local/mysql/bin(開發(fā)板路徑),運行mysql_install_db -u root? 結果出現(xiàn)了如下錯誤:Neither host 'EmbedSky' nor 'localhost' could be looked up with /usr/local/mysql/bin/resolveip Please configure the 'hostname' command to return a correct hostname.

If you want to solve this at a later stage, restart this script with the --force option 這主要的原因是開發(fā)板環(huán)境中的hostname是EmbedSky,而不是通常的Federa14等,所以mysql自動認為可能在該操作系統(tǒng)中的運行會不兼容,有兩種辦法解決:

第一種,運行hostname fedora14,就是欺騙一下hostname;

第二種,運行mysql_install_db -u root –force

我使用了第二種方式: bin/mysql_install_db --user=root --force --basedir=/usr/local/mysql --???????? datadir=/var/lib/mysql

中間出現(xiàn)過一次錯誤:150713 21:06:39 [ERROR] /usr/local/mysql/libexec/mysqld: unknown variable 'innodb_data_home_dir=/usr/local/mysql/var/',查明原因是my.cnf中反注釋了和InnoDB相關的配置。

e) 手動建立mysqld/mysqld.pid,手工建立:

mkdir /var/run/mysqld

touch /var/run/mysqld/mysqld.pid

這一步不知道是不是必須的。但我這樣做了。

f) 到源碼中拷貝啟動文件

cp /opt/mysql-5.1.51/support-files/mysql.server /opt/EmbedSky/root_nfs/etc/init.d/mysqld 修改該mysqld

詳見手冊中4.3.1. mysqld — The MySQL Server的敘述

加上了basedir和datadir,還有pid-file=/var/run/mysqld/mysqld.pid 修改完后,要給新的mysqld附以足夠的權限: Chmod +x mysqld

g) 在開發(fā)板開啟MySQL服務

開發(fā)板不支持service指令,所以service mysql start無效。采用的方法是運行./etc/init.d/mysqld start

但最初運行該指令后出現(xiàn)下面的錯誤:

Starting MySQL... ERROR! Manager of pid-file quit without updating file.

困擾我好久,到開發(fā)板目錄/var/lib/mysql下查閱錯誤日志文件[hostname].err,在我的系統(tǒng)中該錯誤日志文件為EmbedSky.err,從中看到下面的記錄:

150713 21:04:49 [ERROR] Fatal error: Can't change to run as user 'mysql' ;? Please check that the user exists!

可能的原因是:在arm的linux上無法執(zhí)行groupadd mysql,因此需要采用如下方法解決該問題: cd /var/lib/mysql

ls –la可以看到里面的屬性中沒有mysql,于是使用下面的命令: adduser mysql

chown mysql:mysql -R /var/lib/mysql

然后開啟mysql服務,還是出現(xiàn)了ERROR! Manager of pid-file quit without updating file.又查看EmbedSky.err日志,其中多了一條:

150714? 2:48:04 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use

150714? 2:48:04 [ERROR] Do you already have another mysqld server running on port: 3306 ?

很顯然是因為已經(jīng)有mysql的進程嘗試打開3306端口,因此就被占用了,需要殺進程,索性重啟開發(fā)板,然后運行./etc/init.d/mysqld start,可以完美打開。

h) 設置軟連接使mysql,? mysqldump,? mysqladmin這三個命令能在開發(fā)板的shell中直接運行

ln -s /usr/local/mysql/bin/mysql /usr/bin

ln -s /usr/local/mysql/bin/mysqldump /usr/bin ln -s /usr/local/mysql/bin/mysqladmin /usr/bin

7) 測試ARM平臺下的MySQL

a) mysqladmin -u? root?? password?? hahaha 最后一項為我的密碼?? (設置密碼)

b) mysql -h? 127.0.0.1? -u root? -p 或mysql -h? localhost? -u root? -p 這樣便可以

進入mysql環(huán)境。

c) mysql>show databases

按照上面的方法基本可以完成交叉編譯,但是在后面運行的時候,可能會有些問題,提示Permission denied,造成這個錯誤的主要原因就是開發(fā)部啟動后默認是root賬戶,但是你添加的mysql賬戶是不具備root賬戶權限的,所以沒有權限執(zhí)行,解決辦法就是給你的賬戶加入到root用戶組,修改用戶組時要注意usermod命令可能文件系統(tǒng)中沒有提供,這個時候你需要用vi打開開發(fā)板文件系統(tǒng)下面的/etc/passwd文件,把你創(chuàng)建的mysql賬戶修改為root用戶組,這樣就可以運行了,再次運行提示mysql sucess...

恭喜你mysql終于移植成功了,但是如果你在開發(fā)板上面想用Qt開發(fā)時還需要移植嵌入式的mysql Qt驅(qū)動,即交叉編譯生成libqsqlmysql.so文件。

總結

以上是生活随笔為你收集整理的mysql 嵌入式_MySql移植到嵌入式Linux平台的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲天堂av女优 | 91蝌蚪| 毛片黄色一级 | 欧美黄片一区 | 一品道av | 91传媒入口| 国产精品1234 | av一区三区 | 亚洲精品电影 | 黄色一级一片免费播放 | 人妻精油按摩bd高清中文字幕 | 久久久久麻豆v国产精华液好用吗 | 日本午夜免费福利视频 | 污污污污污污www网站免费 | 在线播放少妇奶水过盛 | 欧美h视频在线观看 | 国产日产欧洲无码视频 | 超碰人人人人 | 一个人看的www片免费高清中文 | 免费无码国产精品 | 男女网站在线观看 | 麻豆日产六区 | 色秀视频网 | 3p在线播放 | 青青操视频在线观看 | 国产激情视频在线 | 亚洲精品久久久蜜桃 | 久久久久久久一区二区 | 美女色呦呦 | 成年人拍拍视频 | 福利社区一区二区 | 91 在线视频 | 久久免费在线观看视频 | 91插插插插 | 久草中文在线视频 | 制服下的诱惑暮生 | 亚洲激情av在线 | 国产欧美一区二区三区在线看蜜臂 | 国产91黄色 | 榴莲视频黄色 | 久久久1 | 色中色av| 黄视频网站在线观看 | 日韩伊人网 | 黄色1级片 | 亚洲性欧美 | 欧美少妇一区二区三区 | 天天操天天操天天干 | 一区二区三区亚洲视频 | 亚洲国产日韩在线一区 | 在线免费激情视频 | 国产91白丝在一线播放 | 九九热只有精品 | 精品一区二区三区在线视频 | 免费伊人网 | 九九九色| 不卡在线 | 污污视频在线免费看 | 少妇性bbb搡bbb爽爽爽欧美 | 极品粉嫩国产18尤物 | 综合色天天 | 久草资源在线 | 日韩网| 四虎影院一区 | www.超碰在线.com | 亚洲乱色熟女一区二区 | 亚欧洲乱码视频 | 亚洲欧美中日韩 | 中文字幕有码在线观看 | 巨乳美女被爆操 | 一区二区三区伦理片 | 日韩精品视频在线 | 国产资源免费 | 欧美成人中文字幕 | 国产精品一级 | 一区二区三区在线看 | 国产麻豆网 | 开心激情综合网 | 日韩欧美高清dvd碟片 | 乱子伦一区 | 99re在线播放 | 五月天婷婷激情视频 | 好吊色视频在线观看 | 国产一级做a爰片久久毛片男男 | 欧美日韩在线观看一区二区三区 | 久久亚洲精品小早川怜子 | 亚洲精品久久久久久无码色欲四季 | 五月婷婷丁香激情 | 性激烈视频在线观看 | 久久久亚洲综合 | 日韩av图片| 白丝av | 日日夜夜狠狠爱 | 熟女少妇a性色生活片毛片 亚洲伊人成人网 | 奇米综合| 国产成人视屏 | 亚洲精品三 | 美女午夜视频 | julia一区二区中文久久97 |