Linux下eclipse及mysql安裝,c++訪問mysql數據庫

這兩天在學習linux下用c++訪問mysql,碰到一堆問題,記錄一下。java

1.mysql安裝:node

公司的電腦是64位的,安裝的是64爲的RHEL4,安裝以下三個包:mysql

MySQL-client-5.1.49-1.glibc23.x86_64.rpmlinux

MySQL-devel-5.1.49-1.glibc23.x86_64.rpmios

MySQL-server-5.1.49-1.glibc23.x86_64.rpmc++

啓動MySQL服務時,出現錯誤:starting Mysql.manager of pid-file without updating 。web

這個錯誤網上有不少解決方案,我是將/etc/selinux/config文件中的配置修改成:SELINUX=disabled,sql

而後重啓系統,MySQL服務能夠啓動。數據庫

 

2.安裝eclipseeclipse

網上下載了文件:eclipse-cpp-helios-linux-gtk.tar.gz

因爲這個版本的eclipse須要jdk5以上,

因而又下載了文件:jdk-6u21-linux-i586-rpm.bin

安裝jdk後,位於/usr/java/jdk1.6.0_21

安裝完成後,從新配置/etc/profile文件,在最後加上以下三行內容: 

export JAVA_HOME=/usr/java/jdk1.6.0_21
export CLASSPATH=$JAVA_HOME/jre/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
而後執行source /etc/profile命令,刷新配置。

因爲RHEL4原來已經帶有jdk1.4,因此須要修改一下連接,執行以下命令:

rm /usr/bin java

ln -s /usr/java/jdk1.6.0_21/bin/java /usr/bin/java

而後再執行命令:java -version 

能夠看到JDK的版本已是1.6了。

再執行eclipse 程序,能夠寫C程序了。

 

3.C程序編譯

這一步是用時最多的。

編譯時老是出現錯誤:/usr/bin/ld: cannot find -lmysqlclient

這個問題網上也是不少人在問,最終用以下命令編譯成功了:

gcc -o test test.c -lmysqlclient -lm -I/usr/include/msqyl -L/usr/lib64/mysql

我以前一直將-lmysqlclient -lm兩個參數放在最後,結果老是失敗,後來改到前面,編譯經過。

 

 4. 家裏的電腦上進行MySQL安裝
因爲家裏的電腦是32位的,因此安裝的是32爲的RHEL4,如是下載瞭如下三個文件:
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
安裝時,因爲系統中已經有低版本的mysql-client包,先卸載
用到了rpm的參數 -ev --nodeps --allmatches,最後一個參數是刪除全部匹配的包。
因爲以前的測試,系統中有兩個徹底同樣的包,只能經過這個參數刪除。
安裝完後,mysql服務啓動不了,找遍了網上的解決方法,包括修改/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服務終於能夠啓動了。
最後是不知其因此然。

5. 關於eclipse編譯project
因爲程序中有#include <mysql.h>
因此須要在eclipse中加上對mysql.h的路徑

項目->屬性->C/C++Build -> settings -> gcc c complier -> includes -> include paths 

添加兩個路徑:/usr/lib/mysql;/usr/include/mysql

對於64位的mysql:/usr/lib64/mysql ; /usr/include/mysql

 

要讓eclipse工具能正確實現編譯指令:

gcc -o test test.c -lmysqlclient -lm -I/usr/include/msqyl -L/usr/lib64/mysql

還須要添加對 -lmysqlclient -lm兩個參數

 項目->屬性->C/C++Build -> settings -> gcc c linker-> libraries 

libraries(l) 中添加兩個參數mysqlclient和m

從這裏能夠看出gcc l參數的做用。其中m是包含了數學方法 。

libraryies search path (L)中添加/usr/lib/mysql

到這個地址去找libmysqlclient.a這個文件。

 

終於能夠訪問msyql數據庫了。

 經過執行mysql指令:

 GRANT ALL PRIVILEGES ON *.* TO 'usr'@'%' IDENTIFIED BY 'mypassword'

在其它機器上登陸linux mysql ,能夠測試數據庫的操做了。

 

接下來學習linux下的線程、socket、webservice知識,還不知道會碰到什麼難題。

相關文章
相關標籤/搜索