ソースからのphp のインストールがうまくいきません。


/usr/bin/ld: cannot find -lSM
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php] エラー 1

というようなエラーが発生します。

インストール手順は
① ./configure --with-ming
② make
です。

何回か再インストールを繰り返しているのですが、その時に作成されたのファイルが問題を引き起こしているのでしょうか?

OSはLinux(Fedora Core3)です。
よろしくお願いします。

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2007/07/18 16:03:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Kumappus No.1

回答回数3784ベストアンサー獲得回数185

ポイント35pt

http://subsite.icu.ac.jp/cla/n071316/wiki/?Fedora%20Core%205

URLはややダミーです。

エラー内容はlibSMというライブラリがない、というものです。

UNIXのライブラリはlibXXXXXXという名前付けをされていて、-lSMは"libSMというライブラリをリンクしなさい"という命令なのです。

なのでfedora core3用のlibSMをどこかから探してインストールする必要があるのですが…。

http://rpmfind.net//linux/RPM/fedora/devel/i386/libSM-1.0.2-1.i3...

すでにFC3用のはネット上にはないかもしれません。インストールCDを漁ってみてください。

もしくは上記URLからlibSM-1.0.2-1.src.rpmを拾ってきてビルドするかです。

Fedoraのような依存関係をシステムでどうにかしているディストリビューションで単純にソースを拾ってきてビルドするとこういう問題がよく発生します。便利さと引き換えの不便さですね。

ですので、気合いと根性で依存関係を解決するつもりでなければ、Mingを使えるディストリビューションに乗り換えた方が速いかもしれません。

id:s3_amni

回答、ありがとうございます。

libSMだったんですか!

なるほど!

さっそく調べてみました。

インストール済みのパッケージ"xorg-x11-libs"に"/usr/X11R6/lib/libSM.so.6 -> libSM.so.6.0"が入っていたんですけど、これではいけないのですか?

Linuxは勉強中ですが、よろしくお願いします。

2007/07/18 13:19:53

その他の回答1件)

id:Kumappus No.1

回答回数3784ベストアンサー獲得回数185ここでベストアンサー

ポイント35pt

http://subsite.icu.ac.jp/cla/n071316/wiki/?Fedora%20Core%205

URLはややダミーです。

エラー内容はlibSMというライブラリがない、というものです。

UNIXのライブラリはlibXXXXXXという名前付けをされていて、-lSMは"libSMというライブラリをリンクしなさい"という命令なのです。

なのでfedora core3用のlibSMをどこかから探してインストールする必要があるのですが…。

http://rpmfind.net//linux/RPM/fedora/devel/i386/libSM-1.0.2-1.i3...

すでにFC3用のはネット上にはないかもしれません。インストールCDを漁ってみてください。

もしくは上記URLからlibSM-1.0.2-1.src.rpmを拾ってきてビルドするかです。

Fedoraのような依存関係をシステムでどうにかしているディストリビューションで単純にソースを拾ってきてビルドするとこういう問題がよく発生します。便利さと引き換えの不便さですね。

ですので、気合いと根性で依存関係を解決するつもりでなければ、Mingを使えるディストリビューションに乗り換えた方が速いかもしれません。

id:s3_amni

回答、ありがとうございます。

libSMだったんですか!

なるほど!

さっそく調べてみました。

インストール済みのパッケージ"xorg-x11-libs"に"/usr/X11R6/lib/libSM.so.6 -> libSM.so.6.0"が入っていたんですけど、これではいけないのですか?

Linuxは勉強中ですが、よろしくお願いします。

2007/07/18 13:19:53
id:Kumappus No.2

回答回数3784ベストアンサー獲得回数185

ポイント35pt

http://www.linux.or.jp/JM/html/LDP_man-pages/man8/ldconfig.8.htm...

rootになって、

/sbin/ldconfig -p | grep libSMをやってみてください。

 # /sbin/ldconfig -p | grep libSM
        libSM.so.6 (libc6) => /usr/lib/libSM.so.6
        libSM.so (libc6) => /usr/lib/libSM.so

のように表示されますか?

今後もやりとりが必要になるかもしれないのでコメント欄を開けておいた方がいいと思います。

id:s3_amni

以下のように表示されました。

ibSM.so.6 (libc6) => /usr/X11R6/lib/libSM.so.6

よろしくお願いします。

>今後もやりとりが必要になるかもしれないのでコメント欄を開けておいた方がいいと思います。

開けておきました。ご丁寧にありがとうございます。

2007/07/18 13:57:33
  • id:Kumappus
    では
    cd /lib

    ls -l libSM.*
    とやってみてください。

    おそらく、libSM.so.6->libSM.so.6.0.0とだけ表示され、
    libSM.so->libSM.so.6.0.0
    と表示されないのではないかと思います。

    rootのままで、手動で
    ln -s libSM.so.6.0.0
    /sbin/ldconfig
    とやってみて、もう一度

    /sbin/ldconfig | grep libSM
    をやってみてください。
    libSM.so.6 (libc6) => /usr/lib/libSM.so.6
    libSM.so (libc6) => /usr/lib/libSM.so
    となればたぶんビルドでご質問にある、リンクするところは通るようになると思います。
  • id:s3_amni
    libSM は /lib ではなく/usr/X11R6/lib/ にありました。
    また、libSM.so.6 と libSM.so.6.0 の2種類のファイルがあるのですが、どうしたらよろしいですか?
  • id:Kumappus
    なるほど、ディストリビューションによって場所が違いますからね…。

    cd /usr/X11R6/lib/
    ln -s libSM.so.6.0 libSM.so
    (さっきのちょっと間違ってました、こっちが正解)

    でやってみてください。
  • id:s3_amni
    usr/bin/ld: cannot find -lSM
    は解消されました。
    ありがとうございます。

    が、今度は
    /usr/bin/ld: cannot find -lICE(エルアイシーイー)
    となってしまいました。

    すみません。。。
  • id:Kumappus
    libSMの場合と同じ手順でやってみてください。(libICE)
    ひょっとするともともと入っていないかもしれない、また入っていてもlibSMのようにライブラリがリンカから
    見えていない状態かもしれない。

    なので、あとは気合いと根性だけです…。
  • id:s3_amni
    libICE,libX11と解消しましたら、

    できました♪

    どうもありがとうございました。
    Kumappusさんがいなかったら今日も徹夜でしたよ。
    本当に感謝です!
    あつかましいですが、またよろしくお願いします。
    ありがとうございました。
  • id:Kumappus
    しかし、static linkがちゃんと張れていなかったのは気になりますね。
    普通RPMでその辺も設定するはずなので。
  • id:s3_amni
    >普通RPMでその辺も設定するはずなので。
    そうなんですか!?
    仮想専用サーバーをかりいまして、そこの独自のrpmがあるんですが、それが怪しいかもしれないですね。。。
    実は、先日も急にmingが正常に動かなくなってしまいまして。
    おかげで大変な目にあいましたよ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません