问题
#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
回答1:
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)
回答2:
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.
回答3:
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.
回答4:
You are not linking to the libraries. Use: gcc -llibrarygoeshere -o mysql-test MySQL-Test.c
See here for more information about linking with gcc.
回答5:
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.
回答6:
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.
回答7:
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...
来源:https://stackoverflow.com/questions/3396181/gcc-wont-compile-and-run-mysql-c-libraries