程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 細化解析:與 MySQL客戶端庫的鏈接問題

細化解析:與 MySQL客戶端庫的鏈接問題

編輯:關於MYSQL數據庫

當你鏈接到應用程序以使用MySQL客戶端庫時,可能會遇到以MySQL_開始的未定義引用錯誤,如下所示:

/tmp/ccFKsdPa.o: 在函數`main'中:
/tmp/ccFKsdPa.o(.text+0xb): 對`mysql_init'的未定義引用。
/tmp/ccFKsdPa.o(.text+0x31): 對`mysql_real_connect'的未定義引用。
/tmp/ccFKsdPa.o(.text+0x57): 對`mysql_real_connect'的未定義引用。
/tmp/ccFKsdPa.o(.text+0x69): 對`mysql_error'的未定義引用。
/tmp/ccFKsdPa.o(.text+0x9a): 對`MySQL_close'的未定義引用。

通過在鏈接命令後增加“-Ldir_path -lMySQLclIEnt”選項,應能解決該問題,其中,dir_path代表客戶端庫所在目錄的路徑名。要想確定正確的目錄,可嘗試下述命令:

shell> MySQL_config --libs

來自MySQL_config的輸出可能會指明應在鏈接命令上指定的其他庫。

對於非壓縮或壓縮函數,如果遇到未定義引用錯誤,可在鏈接命令後添加-lz,並再次嘗試。

對於應在系統上存在的函數(如connect),如果遇到未定義引用錯誤,請檢查相關函數的手冊頁,以便確定應在鏈接命令上增加哪些庫。

對於系統上不存在的函數,可能會遇到未定義引用錯誤,如下所示:

mf_format.o(.text+0x201): 對`__lxstat'的未定義引用。

它通常意味著你的MySQL客戶端庫是在與你的系統不100%兼容的系統上編譯的。在該情況下,應下載最新的MySQL源碼分發版,並自己編譯MySQL。

當你試圖執行MySQL程序時,可能會遇到運行時未定義引用錯誤。如果這類錯誤指明了以mysql_開始的符號,或指明未發現mysqlclIEnt庫,這意味著你的系統無法找到共享的libMySQLclIEnt.so庫。對其的更正方式是,通知系統在庫所在位置搜索共享庫。請使用與系統相適應的下述方法:

·將libMySQLclIEnt.so所在目錄的路徑添加到LD_LIBRARY_PATH環境變量中。

·將libMySQLclIEnt.so所在目錄的路徑添加到LD_LIBRARY環境變量中。

·將libMySQLclIEnt.so拷貝到可被系統搜索的目錄下,如/lib,然後通過執行ldconfig更新共享庫信息。

解決該問題的另一種方法是,以靜態方式將你的程序與“-static”選項鏈接在一起,或在鏈接代碼之前刪除動態MySQL庫。使用第2種方法之前,應確保沒有使用動態庫的其它程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved