Solaris10でperl5.10 SunStudio コンパイル編

perl5.10 使いましょう!ということで、普段の環境でも使えるように。

ちなみに環境は、Solaris 10 6/06 を入れた Blade100 です。CPUは UltraSPARC-IIe。
perl自体は、/usr/bin/perl 5.8.4 と /usr/local/bin/perl 5.8.7 でどちらもパッケージ。
/usr/bin/perlは、OS標準のperlなので/usr/local/bin/perlを上書きします。

perlコンパイルですが、Configure;make;make test;make install となります。
Configure はそのまま実行すると、コンパイルオプションのウィザードが走りますが、、、 初心者お断りの内容です。というか、Cのオプションとかムリムリ。
なので、Configureの引数でウィザード入力なしでデフォルトコンパイルします。


1.デフォルトコンパイル


$ gzip -cd perl-5.10.0.tar.gz | tar xf -
$ cd perl-5.10.0
$ sh Configure -des
...
(省略)
...
$ make
...
(省略)
...
$ make test
...
(省略)
All tests successful.
u=29.89 s=10.23 cu=1733.86 cs=275.48 scripts=1388 tests=187897


2.スレッド有りのコンパイル
スレッド無し/有りでアーキテクチャ部分が変わって thread モジュールが追加されるのかな?
sun4-solaris => sun4-solaris-thread-multi


$ gzip -cd perl-5.10.0.tar.gz | tar xf -
$ cd perl-5.10.0
$ sh Configure -des -Dusethreads
...
$ make
...
$ make test
...
$ su
# make install
...
(省略)
...
# /usr/local/bin/perl -V
...
@INC:n /usr/local/lib/perl5/5.10.0/sun4-solaris-thread-multi
/usr/local/lib/perl5/5.10.0
/usr/local/lib/perl5/site_perl/5.10.0/sun4-solaris-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0
/usr/local/lib/perl5/site_perl/5.8.7
/usr/local/lib/perl5/site_perl
...
#

3. INCで旧環境を外す
デフォルトで旧環境が入るというのは、モジュールがそのまま使えるからなのかな?


$ /usr/local/bin/perl Configure --help
...
-Dinc_version_list=none do not include older perl trees in @INC
...
とあるので、こいつも追加して

$ gzip -cd perl-5.10.0.tar.gz | tar xf -
$ cd perl-5.10.0
$ sh Configure -des -Dusethreads -Dinc_version_list=none
...
$ make;make test;
...
$ ./perl -V
...
@INC:n /usr/local/lib/perl5/5.10.0/sun4-solaris-thread-multi
/usr/local/lib/perl5/5.10.0
/usr/local/lib/perl5/site_perl/5.10.0/sun4-solaris-thread-multi
/usr/local/lib/perl5/site_perl/5.10.0
/usr/local/lib/perl5/site_perl
...


なんとか完了。
ちなみに遅いマシンなので、Configure 10分、make 20分、make test 40分 とかかかります。

                                                                                                    • -

2008/7/15 修正

"/usr/local/bin/perl Configure"とか実行していましたが、Configureの中みたら、、、sh でした。  <<そりゃそうだ。