- - PR -
opensshのconfigureでのエラーについて。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-19 10:13
./config のオプションに「shared」をつけていなければ libcrypto.so.0.9.7 や libssl.so.0.9.7 は作成されないはずですが・・・。 それはさておき、一番早い解決方法は OpenSSL や OpenSSH を利用する全てのユーザの環境変数に LD_LIBRARY_PATH を設定することです。 Bシェル系 : LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH Cシェル系 : setenv LD_LIBRARY_PATH /usr/local/lib:LD_LIBRARY_PATH とすることです。このようにすることで libgcc_s.so.1 に対するシンボルの解決ができると思います。ただし、前にも言ったとおり、gcc を移動したり削除したり LD_LIBRARY_PATH 環境変数を削除すると動かなくなってしまいます。 2番目の方法としては、この問題を回避するために libgcc_s.so.1 を静的にリンクします。 /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3.2/ に specs というファイルがあると思いますので、そのファイルの libgcc セクションの内容を以下のように編集します。 *libgcc: %{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -l gcc_eh}%{shared-libgcc:%{!m64:-L/usr/local/lib -R/usr/local/lib}%{m64:-L/usr/local/lib -R/usr/local/ lib} -lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:%{!m64:-L/usr/local/lib -R/usr/local/lib}%{m64:-L/usr /local/lib/sparcv9 -R/usr/local/lib/sparcv9} -lgcc_s%M}%{!shared-libgcc:-lgcc}}}} (%{static ... -lgcc}}}} は1行で書いてください。改行が入ったらダメです) このようにすることで、その gcc でコンパイルされた共有ライブラリが libgcc_s.so.1 に依存しなくなります。ldd の結果はこのように変わります。(libgcc_s.so.1 がありません) $ ldd /usr/local/lib/libcrypto.so libsocket.so.1 => /usr/lib/libsocket.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libdl.so.1 => /usr/lib/libdl.so.1 libc.so.1 => /usr/lib/libc.so.1 libmp.so.2 => /usr/lib/libmp.so.2 /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1 3番目の方法は、OpenSSL をコンパイルするときに libgcc_s.so.1 に対するシンボルを解決してしまうことです。そのためには、OpenSSL を make する前に、環境変数 LD_RUN_PATH を設定します。 Bシェル系 : LD_RUN_PATH=/usr/local/lib export LD_RUN_PATH Cシェル系 : setenv LD_RUN_PATH /usr/local/lib その他の方法としては、OpenSSH を configure する前に、インストールした libcrypto.so と libssl.so を削除してしまうことです。こうすることによって、静的リンクが行われるため、libgcc_s.so.1 に対するシンボルを解決する必要がなくなります。 [ メッセージ編集済み 編集者: あんとれ 編集日時 2005-10-19 10:14 ] | ||||
|
投稿日時: 2005-10-19 10:24
おはようございます。
libgcc のリンクトラブルであれば、openssl等のビルド時に、-static-libgcc オプションを CFLAGS かなにかで渡せば如何でしょうか?? ※このオプションを知らなかった時は、わざわざ libgcc_s.so を隠して、強引に libgcc_s.a をリンクしていました… ( Solaris8 )。たまたま上手く行ったから良いようなものの、阿呆な事をしていたものです。 |