Help us understand the problem. What is going on with this article?

「/usr/bin/ld: cannot find -lmysqlclient」が出たときにやったこと

More than 5 years have passed since last update.

はじめに

「gem install mysql2」をする際に「/usr/bin/ld: cannot find -lmysqlclient」というエラーで数時間ハマった。

基本的には

「/usr/bin/ld: cannot find」というエラーは「-l」に続くライブラリをインストールすれば解消するらしい
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a115makeerror.html

ライブラリのインストール

公式
http://dev.mysql.com/doc/refman/4.1/ja/linux-rpm.html

でも、解消されない場合

インストールはされたはずなのに同じエラーが出続ける・・・
原因は、/usr/lib64/にlibmysql関係のファイルが存在しないことだった。
参照されるフォルダには何も変化が無いためエラーが解消できなかったという。

対処手順

参照されるフォルダを確認する

# ls -la /usr/lib64/libmysqlclient*
ls: /usr/lib64/aaa*: そのようなファイルやディレクトリはありません

インストールされた場所を探す

# ls -la /usr/lib64/mysql/libmysqlclient*
-rw-r--r-- 1 root root 15276160  4月 19  2012 /usr/lib64/mysql/libmysqlclient.a
lrwxrwxrwx 1 root root       24 10月 30 17:11 /usr/lib64/mysql/libmysqlclient.so.15 -> libmysqlclient.so.15.0.0
-rwxr-xr-x 1 root root  1511120 11月 30  2008 /usr/lib64/mysql/libmysqlclient.so.15.0.0
lrwxrwxrwx 1 root root       16 10月 30 16:30 /usr/lib64/mysql/libmysqlclient_r.a -> libmysqlclient.a
lrwxrwxrwx 1 root root       26 10月 30 17:11 /usr/lib64/mysql/libmysqlclient_r.so.15 -> libmysqlclient_r.so.15.0.0
-rwxr-xr-x 1 root root  1518168 11月 30  2008 /usr/lib64/mysql/libmysqlclient_r.so.15.0.0

参照されるフォルダへコピーする

# cp /usr/lib64/mysql/libmysqlclient* /usr/lib64/

追伸

インフラに関する知識がまだまだ足りないと痛感。。
本来ならシンボリックリンクを張った方が良いと思う。

translimit
累計6,000万ダウンロードを突破した「BrainWars」「BrainDots」「CraftWarriors」を開発・運営するスタートアップ
http://translimit.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away