歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> Linux下C連接MySQL出現錯誤解決一例

Linux下C連接MySQL出現錯誤解決一例

日期:2017/3/2 16:42:46   编辑:Linux服務器

在Linux下C連接MySQL出現問題如下:

編譯成功後,運行程序,出現./connect: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory.

出現上面的錯誤是因為系統運行的時候沒有找到程序運行所需要的libmysqlclient.so.15運行庫文件,解決方法有兩個:

方法一:直接把libmysqlclient.so.15這個文件拷貝到系統指定的/usr/lib庫文件目錄中。

方法二:設置/etc/ld.so.conf文件,編輯該文件,在文件中加入libmysqlclient.so.15所在目錄,保存退出。需要注意的是,每次改動ld.so.conf之後需要運行ldconfig來確認刷新。

方法三:Add /usr/local/mysql/lib/mysql to you LD_LIBRARY_PATH environment variable

ldconfig使用方法: ldconfig [options] [libs]

命令ldconfig決定位於目錄/usr/lib和/lib下的共享庫所需的運行的鏈接,這些鏈接在命令行上的libs指定並被保存在 /etc/ld.so.conf中。命令ldconfig和動態鏈接/裝載工具ld.so協同工作,一起來創建和維護對最新版本共享庫的鏈接。

ldconfig的兩個選項

-p:僅打印出文件/etc/ld.so.cache的內容,此文件是ld.so所知道的共享庫的當前列表
-v:更新/etc/ld.so.cache的內容,列出每個庫的版本號,掃描的目錄和所有創建和更新的鏈接

附加信息:

在安裝mysql時,運行"./configure" 時指定參數的問題(只介紹一部分,其他的參數請輸入:"./configure --help"來查詢)

./configure --prefix=/usr --sysconfdir=/etc
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--datadir=DIR read-only architecture-independent data [PREFIX/share]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--infodir=DIR info documentation [PREFIX/info]
--mandir=DIR man documentation [PREFIX/man]

Copyright © Linux教程網 All Rights Reserved