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