Ubuntu 下C程序連接mysql 編譯問題

環境: 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章