MySQL 8.0 C API 开发者指南  / 第 3 章编写基于 C API 的客户端应用程序  /  3.3 使用 pkg-config 构建 C API 客户端程序

3.3 使用 pkg-config 构建 C API 客户端程序

MySQL 发行版包含一个mysqlclient.pc 文件,该文件提供有关供pkg-config命令使用的 MySQL 配置的信息。这使得 pkg-config可以用作 mysql_config的替代品,以获取编译 MySQL 应用程序所需的编译器标志或链接库等信息。例如,下面的命令对是等价的:

mysql_config --cflags
pkg-config --cflags mysqlclient

mysql_config --libs
pkg-config --libs mysqlclient

最后一个pkg-config命令生成动态链接的标志。要为静态链接生成标志,请使用以下命令:

pkg-config --static --libs mysqlclient

在某些平台上,使用和不使用的输出 --static可能相同。

笔记

如果pkg-config没有找到 MySQL 信息,可能需要将 PKG_CONFIG_PATH环境变量设置为mysqlclient.pc文件所在的目录,默认情况下通常是 pkgconfigMySQL 库目录下的目录。例如(适当调整位置):

# For sh, bash, ...
export PKG_CONFIG_PATH=/usr/local/mysql/lib/pkgconfig
# For csh, tcsh, ...
setenv PKG_CONFIG_PATH /usr/local/mysql/lib/pkgconfig

mysqlconfig.pc可以使用 CMake 选项控制 安装位置。请参阅 MySQL 源配置选项INSTALL_PKGCONFIGDIR

--variable选项采用配置变量名称并显示变量值:

# installation prefix directory
pkg-config --variable=prefix mysqlclient
# header file directory
pkg-config --variable=includedir mysqlclient
# library directory
pkg-config --variable=libdir mysqlclient

要使用该选项查看pkg-config可以显示 哪些变量值--variable,请使用以下命令:

pkg-config --print-variables mysqlclient

您可以在命令行中使用pkg-config,使用反引号来包含它为特定选项生成的输出。例如,要编译和链接一个 MySQL 客户端程序,使用pkg-config如下:

gcc -c `pkg-config --cflags mysqlclient` progname.c
gcc -o progname progname.o `pkg-config --libs mysqlclient`