squid-3.0.STABLE9
プロキシー機能を提供するソフトウェアの一つに「squid」があります。現時点ではsquid-2.xと、squid-3.xのリリースが続いています。
さて、新機能を多く搭載したsquid-3.xは先日、squid-3.0.STABLE9がリリースされました。もちろん、Solaris10でも用いることができますが、makeに際して少し工夫が必要です。
特に以下の条件でmakeを予定している場合、参考になるかと思います。
・Solaris10にて、squid-3.0系を64bitでmakeしたい。
・gccはSolaris10に添付のものを、そのまま利用したい。
①環境変数の設定
64bitでmakeを行うため、CFLAGS、LDFLAGSに"-m64"が含まれるよう、調整しておいてください。
②configureの準備
そのままconfigureを行いmakeを進めると、二箇所でエラーが発生します。
(1)CXXFLAGSからSunコンパイラ用の引数が取り除かれない
configureによって、「-xarch=generic64」が諸FLAGSに生成されます。これらはgccを利用する場合は「-m64」に置き換えられますが、現時点のconfigureではCFLAGSとLDFLAGSのみ処理されます。従って、g++が利用された時点でエラーを生じます。
g++: language arch=generic64 not recognized
g++: MemPool.cc: linker input file unused because linking not done
mv: cannot access .deps/MemPool.Tpo
この問題は、configureにおいてCXXFLAGSの引数も置き換えるように記述することで、解決します。以下を参考に、一行を書き足してください。
CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-xarch=generic64/-m64/'`" (追加)
LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
(2)dependency_libsにおいて-lgcc_sが利用される
amd64のライブラリを作成する際に-lgcc_sを引数に用いるため、not foundを生じます。
ld: fatal: library -lgcc_s: not found
ld: warning: file /usr/sfw/lib/amd64/libstdc++.so: attempted multiple inclusion of file
ld: fatal: File processing errors. No output written to cf_gen
この問題は、Solaris10にインストールされているファイルを一部書き換えることで解決します。以下を参考に、一部を書き換えてください。
※書き換え前に、オリジナルのファイルの保存をお勧めします。
vi /usr/sfw/lib/amd64/libstdc++.la
旧:dependency_libs=' -L/usr/sfw/lib/amd64 -lgcc_s -lm'
新:dependency_libs=' -L/usr/sfw/lib/amd64 -lgcc_s_amd64 -lm'
③configure及びmakeの実施とインストール
./configure --prefix=/usr/local/squid --with-large-files --enable-large-cache-files --enable-snmp
make
make install
④64bitバイナリの確認
% ldd /usr/local/squid/sbin/squid
libstdc++.so.6 => /usr/sfw/lib/64/libstdc++.so.6
libgcc_s.so.1 => /usr/sfw/lib/64/libgcc_s.so.1
libmd5.so.1 => /usr/lib/64/libmd5.so.1
libresolv.so.2 => /usr/lib/64/libresolv.so.2
libmalloc.so.1 => /usr/lib/64/libmalloc.so.1
libsocket.so.1 => /usr/lib/64/libsocket.so.1
libnsl.so.1 => /usr/lib/64/libnsl.so.1
libm.so.2 => /usr/lib/64/libm.so.2
libc.so.1 => /usr/lib/64/libc.so.1
libmp.so.2 => /usr/lib/64/libmp.so.2
libscf.so.1 => /usr/lib/64/libscf.so.1
libdoor.so.1 => /usr/lib/64/libdoor.so.1
libuutil.so.1 => /usr/lib/64/libuutil.so.1
お疲れ様でした。
| 固定リンク
| コメント (0)
| トラックバック (0)
最近のコメント