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`