A.3.1. 與MySQL用戶端庫的連結問題

來源:互聯網
上載者:User

與MySQL用戶端庫的連結問題 - MySQL官方教程

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種方法之前,應確保沒有使用動態庫的其它程式。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.