A.3.1.?與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 。請參見 2.8節,“使用源碼分發版安裝MySQL” 。
當你試圖執行 MySQL 程序時,可能會遇到運行時未定義引用錯誤。如果這類錯誤指明了以 mysql_ 開始的符號, 或指明未發現 mysqlclient 庫 ,這意味著你的系統無法找到共享的 libmysqlclient.so 庫。 對其的更正方式是,通知系統在庫所在位置搜索共享庫。請使用與系統相適應的下述方法:
· ???????? 將 libmysqlclient.so 所在目錄的路徑添加到 LD_LIBRARY_PATH 環境變量中。
· ???????? 將 libmysqlclient.so 所在目錄的路徑添加到 LD_LIBRARY 環境變量中。
· ???????? 將 libmysqlclient.so 拷貝到可被系統搜索的目錄下,如 /lib ,然后通過執行 ldconfig 更新共享庫信息。
解決該問題的另一種方法是,以靜態方式將你的程序與“ -static ”選項鏈接在一起,或在鏈接代碼之前刪除動態 MySQL 庫。使用第 2 種方法之前,應確保沒有使用動態庫的其它程序。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
