いつもお世話になっております。 野村です。 ご回答のほど、ありがとうございました。 > 一方、問題のライブラリだけ静的にリンクするには、ライブラリの指定を -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/> > ┴ └┴──┘┴────────────────────────────── > > 佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人) >