這兩天在學(xué)習(xí)linux下用c++訪問(wèn)mysql,碰到一堆問(wèn)題,記錄一下。
1.mysql安裝:
公司的電腦是64位的,安裝的是64為的RHEL4,安裝如下三個(gè)包:
MySQL-client-5.1.49-1.glibc23.x86_64.rpm
MySQL-devel-5.1.49-1.glibc23.x86_64.rpm
MySQL-server-5.1.49-1.glibc23.x86_64.rpm
啟動(dòng)MySQL服務(wù)時(shí),出現(xiàn)錯(cuò)誤:starting Mysql.manager of pid-file without updating 。
這個(gè)錯(cuò)誤網(wǎng)上有很多解決方案,我是將/etc/selinux/config文件中的配置修改為:SELINUX=disabled,
然后重啟系統(tǒng),MySQL服務(wù)可以啟動(dòng)。
2.安裝eclipse
網(wǎng)上下載了文件:eclipse-cpp-helios-linux-gtk.tar.gz
由于這個(gè)版本的eclipse需要jdk5以上,
于是又下載了文件:jdk-6u21-linux-i586-rpm.bin
安裝jdk后,位于/usr/java/jdk1.6.0_21
安裝完成后,重新配置/etc/profile文件,在最后加上如下三行內(nèi)容:
export JAVA_HOME=/usr/java/jdk1.6.0_21
export CLASSPATH=$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
然后執(zhí)行source /etc/profile命令,刷新配置。
由于RHEL4原來(lái)已經(jīng)帶有jdk1.4,所以需要修改一下鏈接,執(zhí)行如下命令:
rm /usr/bin java
ln -s /usr/java/jdk1.6.0_21/bin/java /usr/bin/java
然后再執(zhí)行命令:java -version
可以看到JDK的版本已經(jīng)是1.6了。
再執(zhí)行eclipse 程序,可以寫(xiě)C程序了。
3.C程序編譯
這一步是用時(shí)最多的。
編譯時(shí)總是出現(xiàn)錯(cuò)誤:/usr/bin/ld: cannot find -lmysqlclient
這個(gè)問(wèn)題網(wǎng)上也是很多人在問(wèn),最終用如下命令編譯成功了:
gcc -o test test.c -lmysqlclient -lm -I/usr/include/msqyl -L/usr/lib64/mysql
我之前一直將-lmysqlclient -lm兩個(gè)參數(shù)放在最后,結(jié)果總是失敗,后來(lái)改到前面,編譯通過(guò)。
4. 家里的電腦上進(jìn)行MySQL安裝
由于家里的電腦是32位的,所以安裝的是32為的RHEL4,如是下載了以下三個(gè)文件:
MySQL-devel-5.1.49-1.glibc23.i386.rpm
MySQL-client-5.1.49-1.glibc23.i386.rpm
MySQL-server-5.1.49-1.glibc23.i386.rpm
安裝時(shí),由于系統(tǒng)中已經(jīng)有低版本的mysql-client包,先卸載
用到了rpm的參數(shù) -ev --nodeps --allmatches,最后一個(gè)參數(shù)是刪除所有匹配的包。
由于之前的測(cè)試,系統(tǒng)中有兩個(gè)完全一樣的包,只能通過(guò)這個(gè)參數(shù)刪除。
安裝完后,mysql服務(wù)啟動(dòng)不了,找遍了網(wǎng)上的解決方法,包括修改/usr/selinux/config文件;
修改/etc/my.cnf;刪除日志索引文件等,都不成功,最后將MySQL-server-5.1.49-1.glibc23.i386卸載,
下載并安裝:MySQL-server-community-5.1.49-1.rhel4.i386.rpm,mysql服務(wù)終于可以啟動(dòng)了。
最后是不知其所以然。
5. 關(guān)于eclipse編譯project
由于程序中有#include
所以需要在eclipse中加上對(duì)mysql.h的路徑
項(xiàng)目->屬性->C/C++Build -> settings -> gcc c complier -> includes -> include paths
添加兩個(gè)路徑:/usr/lib/mysql;/usr/include/mysql
對(duì)于64位的mysql:/usr/lib64/mysql ; /usr/include/mysql
要讓eclipse工具能正確實(shí)現(xiàn)編譯指令:
gcc -o test test.c -lmysqlclient -lm -I/usr/include/msqyl -L/usr/lib64/mysql
還需要添加對(duì) -lmysqlclient -lm兩個(gè)參數(shù)
項(xiàng)目->屬性->C/C++Build -> settings -> gcc c linker-> libraries
libraries(l) 中添加兩個(gè)參數(shù)mysqlclient和m
從這里可以看出gcc l參數(shù)的作用。其中m是包含了數(shù)學(xué)方法 。
libraryies search path (L)中添加/usr/lib/mysql
到這個(gè)地址去找libmysqlclient.a這個(gè)文件。
終于可以訪問(wèn)msyql數(shù)據(jù)庫(kù)了。
通過(guò)執(zhí)行mysql指令:
GRANT ALL PRIVILEGES ON *.* TO 'usr'@'%' IDENTIFIED BY 'mypassword'
在其它機(jī)器上登錄linux mysql ,可以測(cè)試數(shù)據(jù)庫(kù)的操作了。
接下來(lái)學(xué)習(xí)linux下的線程、socket、webservice知識(shí),還不知道會(huì)碰到什么難題。
標(biāo)題名稱:Linux下eclipse及mysql安裝,c++訪問(wèn)mysql數(shù)據(jù)庫(kù)
標(biāo)題路徑:http://weahome.cn/article/chghjh.html