Compiling and Linking

At the source level, the interface to the client library is defined in the mysql.h header file, which your own source files can include:

 #include <mysql.h>  

To tell the compiler where to find this file, you may need to specify an -Ipath option, where path is the pathname to the directory where the MySQL header files are installed. For example, if your MySQL header files are installed in /usr/include/mysql or /usr/local/mysql/include, you can compile a source file my_func.c by using commands that look something like the following:

 % gcc -I/usr/include/mysql -c my_func.c  % gcc -I/usr/local/mysql/include -c my_func.c 

If you need to access other MySQL header files, they can be found in the same directory as mysql.h. For example, mysql_com.h contains constants and macros for interpreting query result metadata. The header files errmsg.h and mysqld_error.h contain constants for error codes. (Note that although you might want to look at mysql_com.h to see what's in it, you don't actually need to include this file explicitly because mysql.h does so. Including mysql.h thus gives your program access to mysql_com.h as well.)

At the object level, the client library is provided as the mysqlclient library. To link this library into your program, specify -lmysqlclient on the link command. You'll probably also need to tell the linker where to find the library using a -Lpath option, where path is the directory where the library is installed. For example:

 % gcc -o myprog my_main.o my_func.o -L/usr/lib/mysql -lmysqlclient  % gcc -o myprog _main.o my_func.o -L/usr/local/mysql/lib -lmysqlclient 

If a link command fails with "unresolved symbol" errors, you'll need to specify additional libraries for the linker to search. Common examples include the math library (-lm) and the zlib library (-lz or -lgz).

An easy way to determine the proper header file directories for compiling or library flags for linking is to use the mysql_config utility, available as of MySQL 3.23.21. Invoke it as follows to find out which flags are appropriate for your system:

 % mysql_config --cflags  -I'/usr/local/mysql/include/mysql' % mysql_config --libs -L'/usr/local/mysql/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm 

The output shown is illustrative, and likely will be different on your system.



MySQL
High Performance MySQL: Optimization, Backups, Replication, and More
ISBN: 0596101716
EAN: 2147483647
Year: 2003
Pages: 188

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net