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

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

MySQL 发行版包含一个 mysqlclient.pc 文件,该文件提供了有关 MySQL 配置的信息,供 pkg-config 命令使用。这使得 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 文件所在的目录,默认情况下通常是 MySQL 库目录下的 pkgconfig 目录。例如(根据需要调整位置)

# 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 安装位置可以使用 INSTALL_PKGCONFIGDIR CMake 选项控制。参见 MySQL 源代码配置选项.

--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`