mysqlcembedded-sql

mysql.h compile, but not its functions


I am trying to see how to embed SQL code in a C program, but I have an issue I am not able to understand when I compile this code :

#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>


MYSQL *mysql;
MYSQL_RES *results;
MYSQL_ROW record;


int main() {
 mysql = mysql_init(NULL);

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

if (mysql_real_connect(mysql, "localhost", "root", "PassWord",
     NULL, 0, NULL, 0) == NULL) {
    fprintf(stderr, "%s\n", mysql_error(mysql));
    mysql_close(mysql);
    return 1;
}

mysql_query(mysql, "SHOW DATABASES");

return 0;
}

This is what the compiler tell me when I compile it :

clang++ -g -c testSql.cc
clang++ testSql.o -o testSql
/usr/bin/ld: testSql.o: in function `main':
/home/antoine/Documenti/L3/Information Management II/code/testSql.cc:12: undefined reference to `mysql_init'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:15: undefined reference to `mysql_error'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:19: undefined reference to `mysql_real_connect'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:21: undefined reference to `mysql_error'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:22: undefined reference to `mysql_close'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:26: undefined reference to `mysql_query'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:25: testSql] Errore 1

I have check in the mysql.h file, those function are implemented, so I do not understand why I have this "undefined reference" error, do anyone have an idea on the origin of this error?


Solution

  • Thank you all for the answer. I had to provide a linker in my compilation. I am now compiling with

    clang++ -g -c testSql.cc
    clang++ testSql.o -o testSql `mysql_config --cflags --libs`
    

    instead of

    clang++ -g -c testSql.cc
    clang++ testSql.o -o testSql
    

    and it compile correctly. Thank you !