歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

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

在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