操作系统:CentOS6 (32或64位)
昨天折腾到下半夜1点多,终于从另外一个方向搞定了,是安装新版的MySQL;今天经过努力,在CentOS默认安装环境里,使用上系统默认安装的MySQL,也成功配置并使用上了MySQL C API。我想我遇到的问题,可能很多朋友会遇到,尤其是刚刚进入Linux的朋友,不敢独享,在此写出完整处理过程,以便各位朋友能够少走弯路,更快使用上MySQL C API 好了,下面就开始说说我怎么处理的吧,我们是使用CentOS默认安装环境里的MySQL,并不是安装新版MySQL。建议大家用root帐号登入,这样修改一些东西比较方便。
B,把解压缩目录中的"lib"目录中所有文件,拷贝到“/usr/lib/mysql/”中。 “/usr/include/mysql”目录存放文件是我们程序中要用到的头文件;“/usr/lib/mysql/”目录中存放文件是我们编译程序时候需要链接的库文件。
mysql -u root use test; create table ndb_test (user varchar(30),password varchar(30)); 执行完上述语句后,我们就在MySQL中建立了一个叫“ndb_test”的表了。
#include <mysql.h> #include <stdio.h> int main(void) { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; /* db configure*/ char *server = "localhost"; char *user = "root"; char *password = ""; char *database = "test"; int port=3314; conn = mysql_init(NULL); /* Connect to database */ if (!mysql_real_connect(conn, server, user, password, database, port, NULL, 0)) { fprintf(stderr, "connect error: %s\n", mysql_error(conn)); exit(0); } /* send SQL query */ if (mysql_query(conn, "select * from ndb_test")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(0); } res = mysql_use_result(conn); /* output table name */ printf("MySQL Tables in mysql database:\n"); while ((row = mysql_fetch_row(res)) != NULL) printf("%s - %s \n", row[0],row[1]); /* close connection */ mysql_free_result(res); mysql_close(conn); return 0; }
错误提示:“error while loading shared libraries: libmysql.so.16 ”。 解决办法:找到“/etc/ld.so.conf”文件,打开它,在文件中添加一行:“/usr/lib/mysql”。输入这行是mysql库文件目录路径,我们把mysql库文件放到了“/usr/lib/mysql”中, 所以 在这里添加这行内容是“/usr/lib/mysql”,如果你放到其它目录中,请用你正确的存放MySQL库路径名。 随后继续执行可执行文件“mydbcon”,还可能会出现错误。 错误提示:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 解决办法: 1,打开“/etc/my.cnf”文件,在末尾添加:
[mysql] 2,在终端中输入:"ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock" 随后继续执行可执行文件“mydbcon”,这个时候我们应该能够看到没有错误的提示了,和源代码中比较,如果一致,我们的配置就算成功了,现在就可以在GCC中编译用MySQL C API编写的程序了。
a,“GCC C Complier”->"inclues"->"include pathes(l)"中添加一项“/usr/include/mysql”。注意,这个地方是上面那个,不是下面那个。 b,“GCC C Complier”->"Miscellaneous“->"Other flags"中增加“-std=c99”。 c,“GCC C Linker”->"libraries"->"libraries"中增加一项“mysqlclient”。 d,“GCC C Linker”->"libraries"->"librariy search path"中增加一项“/usr/lib/mysql”。
以上各项全部配置完毕后,保存退出配置页面,随后编译,应该没有错误,随后运行编译出来的可执行文件,和GCC编译出来的执行结果一样,我们终于可以在Eclipse CDT中使用MySQL C API了! |