今天想在linux下连接mysql, 在官网上下了三个rpm文件,
MySQL-client-community-5.1.46-1.rhel5.i386.rpm
MySQL-server-community-5.1.46-1.rhel5.i386.rpm
MySQL-devel-community-5.1.46-1.rhel5.i386.rpm(开发需要)
下载地址在:
http://dev.mysql.com/downloads/mysql/
可是在网上找了段连接数据库的代码,编辑后,怎么也通不过。
说:undefined reference to `mysql_init'
一系列错误,在网上找了老半天,发现有一个人的解决方面,不过具体的为什么,俺再看看,先把解决方法贴出来。
转自:http://news.newhua.com/news1/programming/2008/117/08117112326B3JDK7CCHKI0BKFCH8H1.html
/* Simple C program that connects to MySQL Database server*/
#include
#include
main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "root";
char *password = ""; /* 此处改成你的密码 */
char *database = "mysql";
conn = mysql_init(NULL);
/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
/* send SQL query */
if (mysql_query(conn, "show tables")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
/* output table name */
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
printf("%s \n", row[0]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
}
编译和连接程序
MySQL中有一个特殊的脚本,叫做mysql_config. 它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.你需要使用下面两个选项.
1. --libs 选项 - 连接MySQL客户端函数库所需要的库和选项.
$ mysql_config --libs
输出:
-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto
2. --cflags 选项 - 使用必要的include文件的选项等等.
$ mysql_config --cflags
输出:
-I/usr/include/mysql -g -pipe -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing
你需要将上面两个选项加入到对源文件的编译命令中. 所以,要编译上面的程序,要使用下面的命令:
$ gcc -o output-file $(mysql_config --cflags) mysql-c-api.c $(mysql_config --libs)
执行编译后的程序:
$ ./output.file
希望对你有帮助!