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

[DeleGate-Ja] Re: [DeleGate-Ja] Delegate のコ ンパイル環境と稼働環境が異なる場合
17 Feb 2010 04:47:11 GMT 野村 真路 <pk4aqbrv6-a5kzqr7mcm6o.ml@delegate.org>

いつもお世話になっております。
野村です。

ご回答のほど、ありがとうございました。

> 一方、問題のライブラリだけ静的にリンクするには、ライブラリの指定を -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-a5kzqr7mcm6o.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