在Unix上编译MySQL客户端
这里的示例使用gcc作为编译器。在某些系统上(例如,macOS或FreeBSD上的clang或Solaris上的Sun Studio),可能需要其他编译器。根据需要调整示例。
-I
编译使用MySQL头文件的客户端程序时, 可能需要指定一个选项,以便编译器可以找到它们。例如,如果头文件安装在中/usr/local/mysql/include
,则在compile命令中使用此选项:
-I/usr/local/mysql/include
您可以将代码与动态或静态MySQL C客户端库链接。动态库的基本名称为 libmysqlclient
,后缀因平台而异(例如,.so
对于Linux, .dylib
对于macOS)。静态库libmysqlclient.a
在所有平台上都被命名。
必须使用-lmysqlclient
link命令中的选项链接MySQL客户端 。您可能还需要指定一个-L
选项来告诉链接器在哪里可以找到该库。例如,如果库安装在中 /usr/local/mysql/lib
,则在链接命令中使用以下选项:
-L/usr/local/mysql/lib -lmysqlclient
路径名称在您的系统上可能有所不同。根据需要调整 -I
和-L
选项。
为了使在Unix上编译MySQL程序更简单,请使用 mysql_config脚本。请参见 第4.7.1节“ mysql_config-编译客户端的显示选项”。
mysql_config显示编译或链接所需的选项:
mysql_config --cflags
mysql_config --libs
mysql_config显示编译或链接所需的选项:
mysql_config --cflags
mysql_config --libs
您可以在命令行上调用这些命令以获得正确的选项,然后将它们手动添加到编译或链接命令中。或者,直接在命令行中使用反引号包括mysql_config的输出 :
gcc -c `mysql_config --cflags` progname.c
gcc -o progname progname.o `mysql_config --libs`
在Unix上,默认情况下链接使用动态库。要链接到静态客户端库,请将其路径名添加到link命令。例如,如果库位于中 /usr/local/mysql/lib
,则链接如下:
gcc -o progname progname.o /usr/local/mysql/lib/libmysqlclient.a
或使用mysql_config提供库的路径:
gcc -o progname progname.o `mysql_config --variable=pkglibdir`/libmysqlclient.a