Article delegate-ja/400 of [1-566] on the server localhost:7119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A390@delegate-ja.ML_>]
Newsgroups: mail-lists.delegate-ja

[DeleGate-Ja] Re: [DeleGate-Ja] Delegate のコンパイル環境と稼働環境が異なる場合
25 Mar 2010 00:53:51 GMT ysato@delegate.org (Yutaka Sato)
The DeleGate Project

In message <_A390@delegate-ja.ML_> on 02/17/10(13:47:45)
you <pk4aqbrv6-qa4rnugfcja6.ml@delegate.org> wrote:
 |Error exit code 255 (ignored) および exit code 1 (ignored)ついては、
 |
 |この無視したエラー の影響/原因により、正常稼働しなくなったという事象は
 |これまでにございますでしょうか。

どこで出ているかによるのですが、ignored と出ているということは、Makefile
のルール中で ("-" を前置して) 明示的にエラーを無視した結果だと思います。

DeleGateは、特別な道具立てを使わずに、かつ特定のプラットフォームを明示的
に指示した記述をせずに、より多くのプラットフォーム対応するために、「複数
の候補ソースプログラムの中で、その環境でコンパイルが成功したものを使う。
どれも成功しなかったら機能無しのスタブで代替する」という方法をとっています。
これは主に、maker/ の下で行なっていますが、他のディレクトリの下にもあります。

このために、特に maker/ 下の 多数のソースプログラムのコンパイル時には、
多数のエラーが発生します。
ですので、最終的にバイナリが得られたなら、コンパイルエラーは基本的には
無視して構わないと思いますが、それによって一部の機能が無効になっている
可能性はあります。

 |佐藤様の方で、把握している事象または脅威となる影響などをご存じで
 |あればお教えください。

私の経験では、Windowsでこの方法がうまくいかなかったことがあったり、C / C++
の切り替えの際にうまくいかなかったり、特定の機能がしばらくのリビジョンの間
無効になっていたりしたことがありました。現行の版では、私の持っているテスト
環境(LinuxやBSD系など多数のフリーOSやMacOSX,Windows)では、問題が無いはず
です。その他のOSについては、把握しておりません。

                   9 9  
┌─┐┬┌──┬┐ //\^^ ( e ); {Do the more with the less -- B. Fuller}
├─┤│└─┐│ / 877m\_<   >_ <URL:http://www.delegate.org/delegate/>
┴ └┴──┘┴──────────────────────────────
佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)

In message <_A390@delegate-ja.ML_> on 02/17/10(13:47:45)
you 野村 真路 <pk4aqbrv6-qa4rnugfcja6.ml@delegate.org> wrote:
 |いつもお世話になっております。
 |野村です。
 |
 |ご回答のほど、ありがとうございました。
 |
 |> 一方、問題のライブラリだけ静的にリンクするには、ライブラリの指定を -lxxx 
 |> の
 |> かわりに、/path/of/libxxx.a のように、静的ライブラリを指定してやる方法が
 |> あります。
 |〜
 |
 |(稼働環境にて)
 |ldd DGROOT/bin/delegated
 |〜
 |Unable to find library 'libstdc++.so.6'
 |
 |とエラーメッセージがでますので、
 |ご回答いただいた方法にて、再度makeをします。
 | 
 |また、再度makeにする際、
 |以前にも伺いのメールを差し上げている内容で恐縮ですが、
 |
 |make 時に出力される
 |Error exit code 255 (ignored) および exit code 1 (ignored)ついては、
 |
 |この無視したエラー の影響/原因により、正常稼働しなくなったという事象は
 |これまでにございますでしょうか。
 |
 |現在は、http proxyサーバとしての動作確認を終え、正常稼働すると
 |見込んでおります。
 |
 |佐藤様の方で、把握している事象または脅威となる影響などをご存じで
 |あればお教えください。
 |
 |毎度毎度、お手数をお掛けしておりますが、
 |ご教示のほど宜しくお願致します。
 |
 |
 |----- Original Message ----- 
 |From: "Yutaka Sato" <ysato@delegate.org>
 |To: <feedback-ja@delegate.org>
 |Cc: <pk4aqbrv6-qa4rnugfcja6.ml@delegate.org>
 |Sent: Thursday, February 11, 2010 7:09 AM
 |Subject: Re: [DeleGate-Ja] Delegate のコンパイル環境と稼働環境が異なる場合
 |> ...
 |> |Delegate のコンパイル環境(gccコンパイラにて)と
 |> |稼働環境(gccコンパイラ 未)が異なり、
 |> |稼働環境にはコンパイル環境時のライブラリが存在しない場合、
 |> |稼働環境にて、Delegateを正常起動させる方法は、
 |> |どのような方法がございますでしょうか。
 |>
 |> 一般的に、
 |>
 |> 1) 使用するライブラリを組み込む(静的にリンクする)
 |>  ○何処へ持っていっても動く
 |>  ×実行ファイルは大きくなる
 |>  ×静的ライブラリが用意されてない場合がある
 |>  ×組み込み配布が著作権上許可されてない場合がある
 |>
 |> 2) 必要な動的ライブラリを実行環境上に用意する
 |>  ○実行ファイルは自体小さくて済む
 |>  ×動的ライブラリがないと動かない
 |>  ×root権限で/libやら/usr/libをいじらないといけない
 |>
 |> のどちらかかと思います。
 |>
 |> どのような動的ライブラリが必要とされているかは、通常実際に実行した時の
 |> エラーメッセージ等に表示されると思います。参照されるライブラリの一覧を
 |> 見る方法はOSによって異なりますが、例えばLinuxでは、以下のような感じです。
 |>
 |>    % ldd src/delegated
 |>            linux-gate.so.1 =>  (0x00ae9000)
 |>            libnsl.so.1 => /lib/libnsl.so.1 (0x0022e000)
 |>            libdl.so.2 => /lib/libdl.so.2 (0x0046b000)
 |>            libutil.so.1 => /lib/libutil.so.1 (0x06063000)
 |>            libpthread.so.0 => /lib/libpthread.so.0 (0x00471000)
 |>            libpam.so.0 => /lib/libpam.so.0 (0x00795000)
 |>            libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x02000000)
 |>            libc.so.6 => /lib/libc.so.6 (0x002fd000)
 |>            /lib/ld-linux.so.2 (0x002df000)
 |>            libaudit.so.0 => /lib/libaudit.so.0 (0x007a3000)
 |>            libm.so.6 => /lib/libm.so.6 (0x00442000)
 |>            libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x020ed000)
 |>
 |>    % ls -l src/d*d
 |>    -rwxr-xr-x 1 yutaka yutaka 4172668 Feb 11 06:13 src/delegated
 |>    % size src/d*d
 |>       text    data     bss     dec     hex filename
 |>    3774073   60580  245000 000000X  3e4125 src/delegated
 |>    % file src/d*d
 |>    src/delegated: ELF 32-bit LSB executable, Intel 80386, version 1 
 |> (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for 
 |> GNU/Linux 2.6.9, not stripped
 |>
 |> 全てのライブラリを静的にリンクしてしまう方法は、OSによりますが、リンカの
 |> オプションとして -Bstatic とか -static とか指定します。
 |> そのためには、src/DELEGATE_CONF の中に、
 |> LDOPTS=-static -Bstatic
 |> などと書きます。ただ、これはうまくいかない場合があり、またバイナリがかなり
 |> 大きくなります。
 |>
 |> 一方、問題のライブラリだけ静的にリンクするには、ライブラリの指定を -lxxx 
 |> の
 |> かわりに、/path/of/libxxx.a のように、静的ライブラリを指定してやる方法が
 |> あります。
 |> 例えば libstdc++.so.6 を動的に参照しないようにするとします。在処を調べると、 
 |> 
 |>
 |>    % find /usr -ls | grep stdc++.a
 |>    1444305 1976 -rw-r--r--   1 root     root      2011770 May 27  2008 
 |> /usr/lib/gcc/i386-redhat-linux/4.1.1/libstdc++.a
 |>
 |> ということなので、これを使用することにします。
 |> デフォルトでのmakeをしてできる src/Makefile.go の中から、参照されている
 |> ライブラリを調べます。
 |>
 |>    % grep ^NETLIB= src/Makefile.go
 |>    NETLIB=-lnsl -ldl -lutil -lpthread -lpam -lstdc++
 |>
 |> そこで、src/DELEGATE_CONF の中に、-lstdc++ の代わりに
 |>
 |>    NETLIB=-lnsl -ldl -lutil -lpthread -lpam 
 |> /usr/lib/gcc/i386-redhat-linux/4.1.1/libstdc++.a
 |>
 |> などと書いて、makeします。すると、以下のようになります。
 |>
 |>    % ldd src/delegated
 |>            linux-gate.so.1 =>  (0x00c03000)
 |>            libnsl.so.1 => /lib/libnsl.so.1 (0x0022e000)
 |>            libdl.so.2 => /lib/libdl.so.2 (0x0046b000)
 |>            libutil.so.1 => /lib/libutil.so.1 (0x06063000)
 |>            libpthread.so.0 => /lib/libpthread.so.0 (0x00471000)
 |>            libpam.so.0 => /lib/libpam.so.0 (0x00795000)
 |>            libc.so.6 => /lib/libc.so.6 (0x002fd000)
 |>            /lib/ld-linux.so.2 (0x002df000)
 |>            libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x020ed000)
 |>            libaudit.so.0 => /lib/libaudit.so.0 (0x007a3000)
 |>    % ls -l src/d*d
 |>    -rwxr-xr-x 1 yutaka yutaka 4218871 Feb 11 07:06 src/delegated
 |>    % size src/d*d
 |>       text    data     bss     dec     hex filename
 |>    3809802   62672  261000 000000X  3f152a src/delegated
 |>    % file src/d*d
 |>    src/delegated: ELF 32-bit LSB executable, Intel 80386, version 1 
 |> (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for 
 |> GNU/Linux
 |>
 |>                    9 9  
 |> ┌─┐┬┌──┬┐ //\^^ ( e ); {Do the more with the less -- B. 
 |> Fuller}
 |> ├─┤│└─┐│ / 877m\_<   >_ <URL:http://www.delegate.org/delegate/>
 |> ┴ └┴──┘┴────────────────────────────── 
 |> 
 |> 佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V