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/> |> ┴ └┴──┘┴────────────────────────────── |> |> 佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)