2010/04/11
Solaris 10 で 64bit
by
菊地時夫
—
posted at
2010-04-11 09:31
last modified
2010-04-11 09:31
Solaris 10 で 64 bit build しようとして、ハマったのでメモ
- モノは Squid. --with-large-files を付けないと、2GB 以上のファイルをダウンロードできない。最近は DVD image をダウンロードさせるのもあるので、困るかも。(普通の人はあまり困らないだろうが)具体例としては、Apple Mac OS X の Xcode.
- とりあえず configure に --with-large-files を付けてみると、通らない。64bit でなく 32bit のライブラリしかないものがあるから。具体的には /usr/local/lib/libgcc_s.so.1
- なので、libgcc を 64bit でコンパイルする必要。ということで (バイナリで取って来たのでなく) gcc-core をコンパイル。
- 前提条件 にある、あれこれのツールやライブラリをインストール。ここでハマり。
- /usr/ccs/bin の ld ではダメなので binutils を入れないといけない。
- さらに --with-gnu-as --with-gnu-ld を明示的に指定しないと行けない。
- GMP, MPFR, MPC のインストールで、テストを通らないところがあって、そこは誤摩化した。
- 他にもあったかもしれないが、忘れた。
- gcc 全部コンパイルしてたら、java あたりでエラーになった。原因不明。gcc-core のみとする。が、Squid には gcc-g++ も必要であった。
- Squid のコンパイルがすぐにはできない。
- 以下のような環境設定でコンパイルしていたが:
export CPPFLAGS="-I/usr/local/ssl/include -I/usr/local/include" export LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib -L/usr/local/lib -R/usr/local/lib"
- これだと、/usr/local/lib/sparcv9 に入った、64bit のライブラリとリンクしてくれない。
- なので、squid のコンパイル時だけ:
export LDFLAGS="-L/usr/local/lib/sparcv9 -R/usr/local/lib/sparcv9 -L/usr/local/ssl/lib -R/usr/local/ssl/lib -L/usr/local/lib -R/usr/local/lib"
- とする。
- gcc の build 同様、--with-gnu-ld が必要。(--with-gnu-as も付けておいたが関係ない?)
- で、:
ldd /usr/local/sbin/squid libstdc++.so.6 => /usr/local/lib/sparcv9/libstdc++.so.6 libcrypt_d.so.1 => /usr/lib/64/libcrypt_d.so.1 libmd5.so.1 => /lib/64/libmd5.so.1 libpthread.so.1 => /lib/64/libpthread.so.1 libresolv.so.2 => /lib/64/libresolv.so.2 libsocket.so.1 => /lib/64/libsocket.so.1 libnsl.so.1 => /lib/64/libnsl.so.1 libm.so.2 => /lib/64/libm.so.2 libgcc_s.so.1 => /usr/local/lib/sparcv9/libgcc_s.so.1 libc.so.1 => /lib/64/libc.so.1 libgen.so.1 => /lib/64/libgen.so.1 libmp.so.2 => /lib/64/libmp.so.2 libmd.so.1 => /lib/64/libmd.so.1 libscf.so.1 => /lib/64/libscf.so.1 libdoor.so.1 => /lib/64/libdoor.so.1 libuutil.so.1 => /lib/64/libuutil.so.1 /platform/SUNW,SPARC-Enterprise/lib/sparcv9/libc_psr.so.1
- なのだが、/usr/lib と /lib にある 64 bit ライブラリはちゃんとリンクされてる。
- ランタイムライブラリの指定に -R を付けてコンパイルするようにしているのだが、これだと 32/64 bit の切り替えを自動ではやってくれないので、crle を使うのが本筋なのらしい。(しかし、以前、何か変だったので止めたんだよね)
- Category(s)
- なんでも
- The URL to Trackback this entry is:
- http://sango.lab.tkikuchi.net/Members/tkikuchi/30e130e2/solaris64/tbping