您的位置:首页 > 数据库 > MySQL

Ubuntu 下C程序连接mysql 编译问题

2018-01-12 00:19 309 查看
环境: Ubuntu 16.4

安装mysql:

$sudo apt-get install mysql-server


$apt-get isntall mysql-client


$sudo apt-get install libmysqlclient-dev


执行上面3个命令就可以安装成功mysql了

查看mysql状态

$ps aux | grep mysql


$sudo netstat -tap | grep mysql


登录mysql

$mysql -u root -p
输入Ubuntu登录密码就可以了

查看所有数据库

mysql> show databases;




使用数据库

mysql> use project;




创建数据库

mysql> create database linyk3;




查看所有表

mysql> show tables;




写一个C程序

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char server[] = "localhost";
char user[] = "root";
char password[] = "  ";
char database[] = "mysql";

conn = mysql_init(NULL);

if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

if (mysql_query(conn, "show tables"))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

res = mysql_use_result(conn);

printf("MySQL Tables in mysql database:\n");

while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s \n", row[0]);
}

mysql_free_result(res);
mysql_close(conn);

printf("finish! \n");
return 0;
}


编译出错

致命错误: mysql.h:没有那个文件或目录


原因是没有安装libmysqlclient-dev,执行下面命令即可:

$sudo apt-get install libmysqlclient-dev


linyk3@ThinkPad:~/github$ gcc mysql-hello.c
/tmp/cc24OZKq.o:在函数‘main’中:
mysql-hello.c:(.text+0x53):对‘mysql_init’未定义的引用
mysql-hello.c:(.text+0x80):对‘mysql_real_connect’未定义的引用
mysql-hello.c:(.text+0x95):对‘mysql_error’未定义的引用
mysql-hello.c:(.text+0xcc):对‘mysql_query’未定义的引用
mysql-hello.c:(.text+0xdc):对‘mysql_error’未定义的引用
mysql-hello.c:(.text+0x10e):对‘mysql_use_result’未定义的引用
mysql-hello.c:(.text+0x143):对‘mysql_fetch_row’未定义的引用
mysql-hello.c:(.text+0x15a):对‘mysql_free_result’未定义的引用
mysql-hello.c:(.text+0x166):对‘mysql_close’未定义的引用
collect2: error: ld returned 1 exit status


原因是没有找到编译的库,网上很多方法显示编译时命令为:

gcc -o conn conn.c -L /usr/local/mysql/lib/*.a -lz




g++ main.cpp mysql_deal.cpp -I/usr/include/mysql -L/usr/bin/mysql -lmysqlclient


实际上上面库的路径都不对。通过
mysql_config –libs
命令可以查看本地的库的目录:



这样就可以通过以下命令来编译了:

g++ -Wall mysql-hello.cpp -o mysql-hello -L/usr/lib/x86_64-linux-gnu -lmysqlclient


MSVCR120.dll

解决:

http://www.jb51.net/article/119369.htm?utm_source=debugrun&utm_medium=referral
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: