1 返信 最新の回答 日時: Jun 14, 2012 9:58 AM ユーザー:user1614073

    Linux x86_64版ODSEE11.1.1.5.0のdsccsetup実行時に「libstdc++.so.6: wrong ELF class」

    卯さ耳丑尾
      x86_64版 Oracle Linux 6.1にOracle Directory Server Enterprise Edition 11gR1 PS1(11.1.1.5.0) (linux x86_64版)をインストールする際に、
      問題が発生しましたが、何とか自己解決したものの、少々違和感が残ることがあるため、投稿させていただきます。

      まず、どのような問題が発生したのかを説明します。
      V25767-01.zipをLinuxにコピーして解凍し、解凍先のdsee7/binに移動し、dsccsetupを実行したものの次のようなエラーが発生しました。

      「$ ./dsccsetup ads-create」を実行する際に発生したエラーには次のように対応
      エラー1個目: ./dsccsetup: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
      →解決策:.bash_profileに環境変数LD_LIBRARY_PATHを定義。
      ---具体的な.bash_profileヘの記載内容はココカラ------------------------------------------
      LD_LIBRARY_PATH_64=/usr/lib64
      export LD_LIBRARY_PATH_64

      LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH_64
      export LD_LIBRARY_PATH
      ---具体的な.bash_profileヘの記載内容はココマデ------------------------------------------

      エラー2個目: dsccsetup: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS64
      →解決策: /usr/lib直下に32bitのlibstdc++-4.4.6-3.el6.i686.rpmをインストール
      --------32bit版 libstdc++.so.6のビルド手順はココカラ-------------------------
      libstdc++.so.6が衝突しないように64bitのlibstdc++.so.6をリネームする。
      # cd /usr/lib64
      # openssl sha1 libstdc++.so.6
      SHA1(libstdc++.so.6) = bb95cec4511c36927a7e40ad9f215b752c4ce593
      # mv libstdc++.so.6 libstdc++.so.6.org
      # openssl sha1 libstdc++.so.6.org
      SHA1(libstdc++.so.6.org) = bb95cec4511c36927a7e40ad9f215b752c4ce593

      libstdc++-4.4.6-3.el6.i686.rpmをインストール
      # rpm -Uvh libstdc++-4.4.6-3.el6.i686.rpm

      インストール結果を確認
      # ll /usr/lib/libstdc++.so.6*
      lrwxrwxrwx. 1 root root 19 5月 17 11:49 2012 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.13
      -rwxr-xr-x. 1 root root 930192 12月 7 00:16 2011 /usr/lib/libstdc++.so.6.0.13

      64bitのlibstdc++.so.6を元に戻す。
      # cd /usr/lib64
      # mv libstdc++.so.6.org libstdc++.so.6
      # openssl sha1 libstdc++.so.6
      SHA1(libstdc++.so.6) = bb95cec4511c36927a7e40ad9f215b752c4ce593
      --------32bit版 libstdc++.so.6のビルド手順はココマデ-------------------------

      上記手順で問題の解決はできたものの下記の点が質問です。

      質問1.「dsccsetup: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS64」という
      エラーですが、「ELFCLASS64でELFクラスが誤っている」というエラーを出力するということは、
      dsccsetupのモジュールは、linux x86_64版ODSEEのコマンドであるにもかかわらず、
      32bitのlibstdc++.so.6を探しに行き、それが64bit環境向けのものであるというエラーを出力しているように思えますが、
      その認識は正しいでしょうか。

      質問2. もし質問1の認識が正しい場合、64bit版にも係わらず、なぜ32bitのライブラリをロードしようとするのでしょうか。

      質問3. 今回は上記のように、思いつきでたまたま解決させましたが、これは正しい手順でしょうか。
          後学のため、もし、オラクルでサポートされている適切な解決方法があれば、ご教示いただけませんでしょうか。

      私がインストールしたCPUやOSの情報は次の通りです。
      CPU: Intel Core i7 CPU Q 720 1.60GHz
      OS: Oracle Linux 6.1
      カーネル: 2.6.32-100.34.1.el6uek.x86_64

      ご存知の方がいらっしゃいましたら、情報をお寄せ頂けますようお願いいたします。