Reputation: 317
#include <my_global.h>
#include <mysql.h>
int main(int argc, char **argv)
{
printf("MySQL client version: %s\n", mysql_get_client_info());
}
~$ gcc -o mysql-test MySQL-Test.c
im trying to execute this test program from terminal but get the following error message:
/tmp/cceEmI0I.o: In function main': MySQL-Test.c:(.text+0xa): undefined reference to
mysql_get_client_info'
what is wrong? my system is ubuntu
Upvotes: 8
Views: 21737
Reputation: 691
For uses of Netbeans on Linux
Open you make file (MakeFile) and add the following lines
# These are the flags that gcc requires in order to link correctly against our installed
# client packages
MYSQL_LIBS := $(shell mysql_config --libs)
right below the Environment block.
Then right click on your project node , select Properties, Build and add $(MYSQL_LIBS)
to the Additional options parameter.
Upvotes: 3
Reputation: 917
Maybe late but worked for me
If you are using an IDE you should link the library to your project.
I am using CodeBlocks
on ubuntu 12.4 64x. For linking the library, you should go to Project -> Build options -> linker settings and add the library. this is my lib path : /usr/lib/x86_64-linux-gnu/libmysqlclient.so
Hope be useful...
Upvotes: 1
Reputation: 455122
MySQL
comes with a special script called mysql_config
. It provides you with useful information for compiling your MySQL client and connecting it to MySQL database server.
Pass --libs
option - Libraries and options required to link with the MySQL client library.
$ mysql_config --libs
Typical Output:
-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto
Now you can add this to your compile/link line:
gcc -o mysql-test MySQL-Test.c $(mysql_config --libs)
Upvotes: 17
Reputation: 13551
You forgot to link against the MySQL library.
Try adding -lmysql
to your compilation line.
See http://www.adp-gmbh.ch/cpp/gcc/create_lib.html for more information.
Upvotes: 2
Reputation: 37437
It is not a compilation error. It is a link error.
Add the mysql library to create your executable with option -lmysql
should do the trick.
Upvotes: 2
Reputation: 18782
You need gcc -o mysql-test MySQL-Test.c -L/usr/local/mysql/lib -lmysqlclient -lz
Replace -L/usr/local/mysql/lib
with wherever you client library is (if it isn't already in your libpath)
See the MySql instructions for building clients.
Upvotes: 4