鏈結器找不到 libmysqlclient 符號。
# 1. 獲取正確編譯/鏈結參數
mysql_config --cflags --libs
# 輸出範例:-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lssl -lcrypto
# 2. 編譯命令範例
gcc -o myapp myapp.c $(mysql_config --cflags --libs)
# 3. 手動指定 (若無 mysql_config)
gcc -o myapp myapp.c -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -lz
| 錯誤符號 | 缺失庫 | 鏈結參數 |
|---|---|---|
| compress/uncompress | zlib | -lz |
| connect/socket | socket/nsl | -lsocket -lnsl (Solaris) |
| pthread_create | pthread | -lpthread |
| __lxstat | glibc 版本不匹配 | 重新編譯 MySQL 或安裝相容版本 |
動態連結器在標準路徑找不到共享庫。
export LD_LIBRARY_PATH=/usr/lib64/mysql:$LD_LIBRARY_PATHecho "/usr/lib64/mysql" > /etc/ld.so.conf.d/mysql.conf && ldconfigcp /usr/lib64/mysql/libmysqlclient.so* /usr/lib/ && ldconfiggcc -static -o myapp myapp.c $(mysql_config --cflags --libs)glibc-static 套件,且失去動態升級優勢。libmysql.lib (MSVC) 或 libmysql.dll.a (MinGW),標頭檔 mysql.h。./configure --host=arm-linux-gnueabihf --with-mysql=/path/to/arm/mysql。mysql_config --version 確認版本,update-alternatives 管理預設。find_package(MySQL REQUIRED)
target_link_libraries(myapp PRIVATE MySQL::mysqlclient)
鏈結錯誤本質是頭檔/庫路徑、依賴庫順序、執行期載入路徑三者不一致。標準化流程:以 mysql_config / pkg-config / CMake 為單一真實來源,消除手動參數差異,確保開發/測試/生產環境一致性。