2014-12-21 50 views
4

我在一臺虛擬機上安裝了ubuntu。在那裏,我安裝了MySQL服務器sudo apt-get install mysql-server。這工作,因爲我可以存取權限mysql-u root -p password在c編程中使用mysql

在那之後,我做了:sudo apt-get install libmysqlclient-dev

#include <my_global.h> 
#include <mysql.h> 

int main(int argc, char **argv) 
{ 
    printf("MySQL client version: %s\n", mysql_get_client_info()); 

    exit(0); 
} 

當我編譯這與

gcc version.c -o version `mysql_config --cflags --libs` 

它的工作原理。

但是當我編譯從下面

gcc createdb.c -o createdb -std=c99 `mysql_config --cflags --libs` 

這一次我得到了一些錯誤。

#include <my_global.h> 
#include <mysql.h> 

int main(int argc, char **argv) 
{ 
    MYSQL *con = mysql_init(NULL); 

    if (con == NULL) 
    { 
     fprintf(stderr, "%s\n", mysql_error(con)); 
     exit(1); 
    } 

    if (mysql_real_connect(con, "localhost", "root", "root_pswd", 
      NULL, 0, NULL, 0) == NULL) 
    { 
     fprintf(stderr, "%s\n", mysql_error(con)); 
     mysql_close(con); 
     exit(1); 
    } 

    if (mysql_query(con, "CREATE DATABASE testdb")) 
    { 
     fprintf(stderr, "%s\n", mysql_error(con)); 
     mysql_close(con); 
     exit(1); 
    } 

    mysql_close(con); 
    exit(0); 
} 

錯誤:

"Usage:: No such file or directory 
[OPTIONS]: No such file or directory 
Options:: No such file or directory 
[-I/usr/include/mysql: No such file or directory 
[-L/user/lib/x86_64-linux-gnu: No such file or directory 
. 
. 
. 
unrecognized command line option '--cflags' 
unrecognized command line option '--libs' 
. 
. 
unrecognized command line option '--socket' 
unrecognized command line option '--port' " 

有人可以給我解釋一下我做錯了什麼,以及如何解決它?

我只想從C程序中的表中獲取一些數據。

+0

當你嘗試編譯命令時,你會看到命令錯誤,因爲某些命令被意外的參數調用,其中一些命令是其他命令的輸出,這與其他命令無關,但更有可能發生編輯命令時出錯。 – CMoi

+0

我無法重現此行爲。你能再試一次嗎? –

+1

適合我。這是你用來編譯它的確切的命令行嗎?正如@CMoi所說,你得到的「錯誤」實際上是來自'mysql_config'的輸出。 – slugonamission

回答

3

我懷疑你居然跑

gcc createdb.c -o createdb -std=c99 `mysql_config` --cflags --libs 

而不是

gcc createdb.c -o createdb -std=c99 `mysql_config --cflags --libs` 

這是行不通的; mysql_config,如果它沒有得到任何參數,會打印出一堆使用說明,這些說明將被傳遞到gcc,然後你會跟着--cflags --libs,其中gcc也不理解。 gcc是嚴重困惑和抱怨。

如果你確定這些參數是mysql_config而不是gcc,那麼每個人都會很高興。

+0

我總是運行「gcc createdb.c -o createdb -std = c99」mysql_config - cflags --libs'「。 那不是問題...我仍然有那些錯誤... –

+0

我的意思是,我用 的gcc -o createdb.c -std CREATEDB C99 = 'mysql_config --cflags --libs' 用'而不是' –