Solaris 9 x86に関するページ

準備

Solaris無償版の入手

事前情報収集

インストール#1

次の構成のPCにインストールした。

CPU Pentium III(Katmai) 500MHz
M/B SOYO 6BA+
Intel 440BX
Award PCI BIOS
Memory 640MB PC-100
Video Eontronics Picasso (Permedia 2)
LAN Planex FW-110TX-PK (Realtek 8139)

経過

Solaris 9 Software 1 of 2のCD-RをCDドライブにセットしてマシンをブートする。
Solaris Device Configuration Assistant画面が表示される。[F2]キーを押して続行。
Bus Enumeration画面で警告発生

Warning: Resource Conflict both device are added
NON-ACPI device:PNP0F03
    Port: 60, 64; IRQ: 12
ACPI device: PNP0301
    Port: 60, 64; IRQ: 1

BIOSでACPIをdisableする。Award BIOSの場合、POWER MANAGEMENT SETUPのACPI function項をEnabledからDisabledに変更

Identified Device画面で認識されたデバイス一覧が表示される。ISA: System keyboard (US-English)となっているので、[F4]キーを押して、[X] Set Keyboard Configurationとして[F2]キーを押す。[X] Japanese (106)として[F2]キーを押す。[X] with Windows keysとして[F2]キーを押す。[F3]キーでIdentified Device画面に戻り、[F2]キーを押す。

Boot Solaris画面で[X] CD ... として[F2]キーを押す。

Select type of installation: で1を入力(Solaris Interactive)。

Select a Language: で4を入力(Japanese)。

Select a Locale:で0を入力(Japanese EUC (ja))。

The Solaris Installation Program画面で[F2]キーを押す。

kdmconfig - Introduction画面で[F2]キーを押す。

kdmconfig - View and Edit Window System Configuration画面で、[X] Change Video Device/Monitorとして[F2]キーを押す。

Video Device Selection画面で、[X] XF86-GLINT GLINT and Permedia based video cardとして[F2]キーを押す。
※ 3Dlabs Permedia 2の選択肢もあったが、こちらを設定した場合テスト画面が表示されずハング状態となってしまう。

Monitor Type Selection画面で、[X] MultiFrequency 85kHzとして[F2]キーを押す。
※使用しているモニターの水平周波数を超えない値を選ぶ

Screen Size Selection画面で、[X] 17-inch(43cm)として[F2]キーを押す。

Resolution/Colors Selection画面で、[X] 1024x768 - 256 colors @ 75Hzとして[F2]キーを押す。
※ インストール時は、1024x768以下、256色が無難。インストール後にkdmconfigコマンドで再設定可、コンソールログインでkdmconfigを実行する。

Visual Screen Resolution Selection画面で、[X] 1024 x 768として[F2]キーを押す。

kdmconfig - View and Edit Window System Configuration画面に戻っているので、[F2]キーを押す。

Window System Configuration Test画面で[F2]キーを押す。

グラフィックステスト画面が表示されるのでマウスでOKをクリックする。

Xが起動し、sysidtoolウィンドウが表示されるので、[F2]キーを押す。

ホスト名を入力して[F2]キーを押す。確認画面でも[F2]キーを押す。

時間帯の選択画面では、[X] アジアとして[F2]キーを押し、国と地域で[X] 日本として[F2]キーを押す。

日付と時刻は適切な値を設定して[F2]キーを押す。確認画面でも[F2]キーを押す。

Solaris対話式インストールで、初期オプションの[F4]キーを押す。続いて標準[F2]キーを押す。

地域の選択では、[/] アジアで[Enter]キーを押す。[X] 日本語EUC(ja)として[F2]キーを押す。

ソフトウェアの選択では、[X] Entire Distributionとして[F2]キーを押す。

ディスクの選択では、ディスクを選択して[F2]キーを押す。(c0d0)

ファイルシステムを自動配置しますか?では、[F4]キーを押して手動配置を選択する。
※ 自動配置では、/export/homeが別スライスとなるが、今回は、/とswapのみにしたいため

ファイルシステムとディスクの配置画面で、カスタマイズ[F4]キーを押す。

ディスクのカスタマイズ(c0d0)でswapに640MB、残りを全て/に割り振る。

Slice マウントポイント Size(MB)
   0   /               12327
   1   swap              640
   2   overlap         12969
   3                       0
   :                       :

インストール後にリブートしますか?では、[X] 手動リブートとして[F2]キーを押す。

このあとしばらくインストール作業が実施され、終わるとリブートする。リブート後はXウィンドウが起動し、Software 2 of 2をCDドライブに入れるよう指示されるので、入れて先に進む。2 of 2の次は、LanguageをCDに入れるよう指示されるので、入れて先に進む。これで一通りインストールが完了する。

ネットワークカードはインストール時には認識されていない。チップはRealtekの8139だ。RealtekのWebサイトからSolaris7/8用のドライバがダウンロードできる。これはSolaris9でも有効との情報がインターネット上のどこかに記載されていたので、これを使用する。2004/8/29時点では以下のようにリンクを辿る。downloads→RTL8139(A/B/C/D/8130)/810X series(Software) →Unix(Linux)→Solaris 7,8,9 and 10

このファイルをFDかCD-Rに入れてSolarisマシンに展開する。CD-Rの場合、Windows用のJuliet形式でも8+3文字形式でSolaris上からアクセスできるようだ。Installスクリプトを実行後、/etc/hostname.rtls0ファイルを新規作成しホスト名を記述する。touch /reconfigureを実行してからリブートすると、ifconfig -a でネットワークカードが認識されている。あとはネットワーク設定をすればよい。Solaris9標準インストールでunzipコマンドが使えるようになっている。

IPアドレスの設定は、/etc/hosts、/etc/netmasksに記述しておく。

DHCPクライアントとして設定する場合は、# touch /etc/dhcp.rtls0 として再起動する。ホスト名がunknownになってしまう有名な問題(仕様)があるので、割り付けられるIPアドレスを調べてから/etc/hostsにそのIPアドレスとホスト名を記述する。ブロードバンドルータ経由でインターネットに接続する環境ではDHCPの方が楽なので。

Software Companionは、CDにセットした後インストーラを実行する。Software Companionには、GNUのツール群等が収められている。

Solaris 9 x86推奨パッチクラスタ(9_x86_Recommended.zip)を展開し、./install_clusterを実行する。-nosaveオプションを指定すると旧いファイルの/var/sadmへのバックアップを抑制する。パッチは、シングルユーザモードで当てた方がよいので、init sでランレベルをシングルユーザに移行しておく。Return code 2でfailしているものは、適用済みパッチなので気にしない。

問題対応メモ# -

Solaris 9からHDDのDMA有効がデフォルトになった。
構成によっては1枚目のインストール後再起動時に立ち上がらなくなる問題が発生する。
→再起動直後に[Esc]でDevice Configuration Assistantに入り、Boot Solaris→View/Edit Property Settingsで"ata-dma-enabled"の値を0にする。

Solairs 9 9/04 ご使用にあたって >> インストールに関する注意事項とバグ情報にも記述があり、ソフトリブート時にハングするとあります。一度Power OffしてOnすると起動するので、/platform/i86pc/kernel/drv/ata.confに次の1行を追加します。

ata-revert-to-defaults=0;

Languagesまでインストールが終わったら、再起動後ログインしてコンソールからRealtekのドライバをインストール。sys-unconfigし再起動。

Sun Studio 8のインストール

60日間評価版をインストールしてみる。

作業ディレクトリに上記tarファイルを展開する。

インストールには、以下の3つの方法がある。

  1. X Window System上でのGUIインストーラ
  2. コマンドラインでのCUIインストーラ
  3. バッチインストーラ

ここでは2.コマンドラインでのインストールを実施する。

# ./installer -nodisplay

<継続するには Enter キーを押してください。> {"!" 終了} で[Enter]キーを押す。バイナリコードライセンス契約書が表示されるので、文書の最後まで[Enter]を押して進む。「同意する」と漢字で入力する。
インストールするコンポーネントを選択する。デフォルトのままでよければ[6]を入力する。
この製品のインストール先 /opt でよければ[Enter]入力。
シリアル番号の入力では、2.60日間の試用シリアル番号 を選択する。
インストールの準備完了で、1.インストール開始を選択する。

インストール後、Sun Studio Compiler Collectionのパッチを確認します。Sun Studio Product SupportページからSun ONE Studio 8 Compiler Collectionを辿ると、以下のパッチが出ています(2004.8.30現在)

111713-08    112761-09    113825-02   115114-02
112756-09    113819-08    113986-10
112759-04    113821-01    114804-01

2004/8/16付のSolaris 9 x86 Recommended Patchesを適用した時点で、111713-08, 113986-10, 115114-02が適用済みだったので、残りをインストールする。パッチのインストールは以下のようにコマンドを実行する。

#patchadd -d ./111713-08

Sun Studio 9のインストール

既にSun Studio 8を入れた後で、Studio 9が出ているのに気づいた。そこで、まずSun Studio 8のアンインストールを行い、続いてStudio 9に必要なパッチを入手してStudio 9をインストールする。

Sun Studio 9の入手(60日評価版)

Sun Studio 9のページから、右側メニューのTrial Downloadsを辿り、評価版をダウンロードする。

これらを作業用ディレクトリ上で展開する。

Sun Studio 8のアンインストール

以下のディレクトリへcdする。

# cd /var/sadm/prod/com.sun.sls8_compiler_collection_fcs
# ls
uninstall_Compilers.class      uninstall_Solaris_patches.class
uninstall_Documentation.class  uninstall_Tools.class
#

これらはアンインストール用プログラム(Javaバイトコード)となっているので、javaで実行する。

# java uninstall_Compileres
# java uninstall_Documentation
# java uninstall_Solaris_pathces
# java uninstall_Tools

パッチのインストール

パッチは、Sunのサイト:Sun Studio - Patchesページより入手可能。

111713-08(09:2004/11/10)
113986-06(13:2004/10/21)
115114-01(02:2004/03/24)
111728-03(03:2004/05/08)
112786-23(34:2004/12/09)

これらは既に最新版が適用済みであった。

Studio 9のインストール

作業ディレクトリに展開されたinstallスクリプトをスーパーユーザで実行する。

# cd sunstudio9
# tar xf /tmp/studio9*.tar
# ./installer

Sun[tm] Studio 9 インストールウィザードが起動するので、[次へ>]をクリックする。
バイナリコードライセンス契約書が表示されるので、◎同意する として[次へ>]をクリックする
ロケールの選択では、英語、日本語、中国語にチェックされているので中国語のチェックを外して[次へ>]をクリックする
デフォルトインストールにチェックが入っているので、そのまま[次へ>]をクリックする
インストールディレクトリはデフォルトで/optになっているので、そのまま[次へ>]をクリックする
シリアル番号を入力では、[60日間の試用シリアル番号]をクリックし、生成された番号をメモして[次へ>]をクリックする。
インストールの準備完了画面で[インストール開始>]をクリックする。
インストール終了後、インストールの一覧が表示されるので[次へ>]をクリックする。
製品登録の案内が表示されるので[次へ>]をクリックする
インストールの後で・・・が表示されるので[終了]をクリックする。

インライン・アセンブラ

int add(int a1, a2); をインライン・アセンブリ記述する例。

まず、拡張子add.ilのファイルを用意する。

.inline add, 8
movl   (%esp), %eax
movl   4(%esp) %ecx
addl   %ecx, %eax
.end

これを利用するCコードを記述する。

extern "C" {
    extern int add(int a1, int a2);
}

void someFunc() {
    int a1 = 123;
    int a2 = 456;
    int result = add(a1, a2);
       :
}

一緒にコンパイルする。

$ CC -c some.cc add.il
$ CC -o some some.o

インライン・アセンブラについては、man inline を参照。また、以下の記事も参考になる。

インライン・アセンブリ記述ルール

Freeawre for Solaris

GNU関連のツールのバイナリが公開されている。INTEL/Solaris9用もあるので、GNUツール類はここから入手するのが簡単。/usr/local下に置く構成となっている。pkgaddコマンドでインストールする形式となっている。

$ su
# pkgadd -d tar-1.14-sol9-intel-local

※GNU tarに関しては、/usr/sfw/binの中にgtarが入っていた。しかし、bz2形式には対応していないので、上記GNUtarをインストールする方が良い。

Java

Solaris x86用のバイナリを入手する。

Java 2 Standard Edition, Development Kit 5.0

Solarisパッケージ形式とtar塊の2種類の形式で配布されている。今回はSolarisパッケージ形式をインストールする。

$ zcat jdk-1_5_0_01-solaris-i586.tar.Z | tar xf -
$ ls
COPYRIGHT  README.html  SUNWj5dev  SUNWj5jmp  SUNWj5rt
LICENSE    SUNWj5cfg    SUNWj5dmo  SUNWj5man
$ su
# pkgadd -d . SUNWj5rt SUNWj5dev SUNWj5cfg SUNWj5man SUNWj5dmo SUNWj5jmp
    :
#

Solaris 9探訪

システム管理

ユーザ管理

ホームディレクトリ

デフォルトでは、/export/homeの下にユーザのホームディレクトリを設けるようになっている。但し、オートマウント機能によって、/homeの直下に仮想的にホームディレクトリが見えるように運用することができる。この場合、/home直下に仮想的に置かれるディレクトリは、NFSでアクセスできる別マシンのものであってもよい。Solarisでは、ユーザのホームディレクトリはネットワーク上のどこか1箇所に存在し、どのSolarisマシンにログインしても/homeの下にユーザのホームディレクトリが見えるような構成を取っている。

オートマウント機能を利用する場合、/etc/auto_homeに以下の記述を追加する。

+auto_home
* localhost:/export/home/&

ユーザの作成

ユーザの作成には、まずグループが作成されている必要がある。

$ su
# groupadd delta
# useradd -g delta -d /export/home/torutk -s /bin/bash -m torutk
# 

次に、/home直下にオートマウントする機能を利用する場合、ユーザのホームディレクトリを/home以下になるよう修正する。

# usermod -d /home/torutk torutk
# 

プログラミング

Java

Solaris 9(4/04リリース)には、J2SE 1.4.2_04が標準搭載されている。Recommended patchを当てたら1.4.2_05になった。Solaris 9のリリース時期によってマイナーバージョンは違うものの、Javaは1.4系列が搭載されている。

antが/usr/sfw/binに入っているが、バージョンは1.4.1と古めである。要注意。

GCC

Software Companionには、GCC 2.95.3およびGCC 3.3.2が含まれている。GCC 3.3.2を使用する場合、/opt/sfw/bin より先に/opt/sfw/gcc-3/binにPATHを通す必要がある。

C言語、C++言語、FORTRAN、

Python

Software Companionには、Python 2.2.3が含まれている。

Perl

Solaris 9には、Perl 5.6.1が標準搭載されている。

Ruby

Software Companionには、Ruby 1.6.4が含まれている。

Emacs/XEmacs

Software Companionには、Emacs 21.3.1およびXEmacs 21.4.14が含まれている。

ざっと使って2点問題があった。

1.ミニバッファにATOKの文字が常に表示され、本来表示される文字列が隠れる

回避方法1

LANG=C emacsと起動する。この場合、ATOKは使えない

回避方法2

Xリソースに、"*disableStatusArea: true"を設定する。

/usr/X/lib/X11/ja/app-defaults/Htt のリソース記述に追加する方法がある。

*disableStatusArea: true

などに置き換える。

2.Mark setのキーバインド(Ctrl+SPC)がATOKのオン/オフにオーバーライドされる

回避方法1

日本語入力は、X Window System(CDE)上であればATOKを使って対応できるようだ。しかしATOKはCtrl + SPCで切り替えられるので、Emacsのキーバインドと競合する。ATOKを使わないのであれば、LANG=C emacs& と起動することで回避可能。漢字入力は、SKKを使えばよいだろう。

回避方法2

/usr/X/lib/X11/ja/app-defaults/Htt のリソース記述を変更すると、Ctrl + SPCを別なキーに変更可能

*conversionOnKeys: Henkan_Mode <Ctrl>space <Ctrl>at

となっているのを

*conversionOnKeys: Henkan_Mode <Ctrl>backslash

などに置き換える。ただし、ATOKをONにした後、OFFにするにはCtrl-\では駄目で、Ctrl+SPCにしないといけない。こちらの設定変更方法は未判明。

漢字入力環境SKK

VI

Software Companionには、gvim6.2が含まれている。

Media Libs

Sunがマルチメディア系処理のためのコアライブラリとして提供しているライブラリ。SPARCではVIS演算命令を使用する。

なお、GNOMEの性能向上にも寄与する。

Mesa (OpenGL互換ライブラリ)

Solaris x86ではOpenGLは搭載されていない。Mesaライブラリを入手することで、ソフトウェアエミュレーションのOpenGLを使用することが可能になる。Solaris x86用としては、SunPro Cコンパイラ用とGCC用のMakefileが用意されているので、ビルドは簡単。

ビルドメモ

$ tar xjf MesaLib-6.2.tar.bz2
$ cd Mesa-6.2
$ make solaris-x86
    :
$

これだと、libGL.a等のスタティックリンクライブラリしか生成されない。config/solaris-x86を修正する

! MKLIB_OPTIONS = -static

- GL_LIB_NAME = libGL.a
- GLU_LIB_NAME = libGLU.a
- GLUT_LIB_NAME = libglut.a
- GLW_LIB_NAME = libGLw.a
- OSMESA_LIB_NAME = libOSMesa.a
------
! MKLIB_OPTIONS =
! CXX=CC
! CXXFLAGS = -fast -KPIC -I/usr/openwin/include -DUSE_XSHM

glutは、MesaLibではなく、MesaDemosに含まれている。

なお、Solaris x86用にビルドされたバイナリを公開しているサイトがある。

時間計測

性能を測る、日時を取得する、一定時間毎に処理を行いたい(周期処理)、などのプログラミング上のニーズがあります。

超高精度時間計測(RDTSC)

Pentium系CPUでは、CPUクロックごとに加算される64bitのタイムスタンプカウンタ(IA32_TIME_STAMP_COUNTER_MSR:通称TSC_MSR)があります。これをRDTSC
命令を使って読み出すことで、CPUクロックと同じ分解能を持つ精度のタイマが実現できます。

使用方法

アセンブリ言語でRDTSC命令を使いTSC_MSRの値を取得する処理を記述する。

read_tsc.il
.inline read_tsc, 0
    cpuid
    rdtsc
.end
注1
RDTSC命令もアウトオブオーダで実行されるため、他の命令とシリアル化されない。そのため、正確に処理時間を計測する場合、直前にシリアル化命令(ここではCPUID)を実行しておく。
注2
RDTSC命令は読み出したTSC_MSRの値(64bit)を、EDX:EAXレジスタに格納する。Sun Studio C/C++コンパイラにおけるインライン・アセンブラ機能では、64bit整数をリターンする際はEDX:EAXレジスタを使用するため、特にリターン値をレジスタ等に格納する処理は不要となる。
高精度時間計測(gethrtime)

POSIX 1003.1

高精度の日時取得(gettimeofday)

こちらは相対値ではなく、システム時刻を高精度で取得する機能である。精度はハードウェアによるが、最近の機種では1μ秒と思われる。

デスクトップ環境

CDEとGNOME

Solarisは、標準でCDE(Common Desktop Environment:共通デスクトップ環境)と呼ばれる、GUIツールキットにMotifを使用したXのデスクトップを採用している。しかし、もう1つのデスクトップとしてGNOMEを提供している。新規ユーザを作成後、初回にX上からログインする際に、CDEかGNOMEかどちらを使用するか選択する画面が表われる。また、Xログインダイアログの[オプション]→[セッション]でCDEかGNOME 2.0かを選択できる。

GNOME 2.0については、Solaris 9でも別途Sunから入手する必要があると思っていたが、標準で利用可能となっていた。Gladeなるインタフェースビルダーも装備されている。

ライブラリとしては、GKT+2.0、Pango 1.0.0、Bonobo 2.0、ORBit 2.0、Glib 2.0、といったちょっと前のGTK+バージョンである。

GNOME設定メモ

環境変数の設定(bashの場合)

どこに書けばよいのか悩んだので調査

  1. /etc/profile
    ここに設定を記述すれば最初に読まれる。全ユーザ共通なので、ここにはそのような設定のみ記述する
  2. [X上でログインした場合のみ] ~/.dtprofile
    CDE/GNOME等デスクトップ環境でログインした場合に読まれる。
  3. ~/.bash_profile
    ユーザ毎の設定ファイル。ログイン時に読まれる。
  4. [2.のファイルが存在しない場合のみ] ~/.bash_login
    2.と役割は同じ
  5. ~/.bashrc

ログイン時にユーザの環境変数は、~/.bash_profile、デスクトップ環境固有のものは~/.dtprofileに記述すればよい。

DBSKKD−CDB

SKKサーバの1つ。dbskkd-cdbホームページより入手する。

cdb-0.55を作業ディレクトリに展開し、ビルドする。続いてdbskkd-cdb-1.01を作業ディレクトリに展開する。

work$ tar xzf cdb-0.55.tar.gz
work$ tar xzf dbskkd-cdb-1.01.tar.gz
work$ cd cdb-0.55
cdb-0.55$ make
    :
cdb-0.55$ cd ../dbskkd-cdb-1.01
dbskkd-cdb-1.01$ chmod +w makeskkcdb.sh
dbskkd-cdb-1.01$ vi makeskkcdb.sh
dbskkd-cdb-1.01$ vi skktocdbm.sh

makeskkcdb.shファイルに記述されているSKK辞書のパスおよびcdbmakeコマンドのパスを修正する。

#!/bin/sh
#$Id: makeskkcdb.sh,v 1.1 1998/12/12 11:01:36 kenji Exp $
./skktocdbm.sh < /opt/sfw/share/skk/SKK-JISYO.L | \
        ../cdb-0.55/cdbmake SKK-JISYO.cdb SKK-JISYO.L.tmp

また、skktocdbm.shの中でawkを呼び出している部分を、gawkを呼ぶように修正する。

gawk '
  /^[^;]/ {
dbskkd-cdb-1.01$ ./makeskkcdb.sh
dbskkd-cdb-1.01$ su
# mkdir /usr/local/share/skk
# cp SKK-JISYO.L.cdb /usr/local/share/skk
# exit
dbskkd-cdb-1.01$ vi Makefile
dbskkd-cdb-1.01$ gmake
    :
dbskkd-cdb-1.01$ su
# make install
    :
# vi /etc/services
# vi /etc/inetd.conf
# ps -e |grep inetd
   180 ?   0:00 inetd
# kill -HUP 180
#

Makefileを修正する。LDFLAGSの設定から-lutilを除き、-lsocket -lnslを追加する。

LDFLAGS = ./libcdb.a -lsocket -lnsl

inetd 経由で起動するために、/etc/servicesに追加する

skkserv      1178/tcp               # SKK Japanese input method

/etc/inetd.confに追加する

skkserv  stream  tcp  nowait  nobody  /usr/local/libexec/dbskkd-cdb
注記
辞書ファイル(SKK-JISYO.L.cdbを他のパスにコピーするときは、make時にマクロJISHO_FILEでパスを指定する必要がある。

skkinput

X Window System上でのSKK日本語入力クライアント。

work$ tar xzf skkinput-2.06.4.tar.gz
work$ cd skkinput-2.06.4
skkinput-2.06.4$ vi Imakefile

Imakefileを修正する。#define Default_FontSet のフォント設定を適切なものに修正する。

skkinput-2.06.4$ xmkmf -a
    :
skkinput-2.06.4$ 

問題解決

tarでディレクトリの検査合計エラーがでる

世の中的にはGNU tarが標準的に使われており、これでアーカイブされたものの中にはSolaris標準のtarでは正常に抽出できないものが結構存在するようだ。そこで、GNU tarを使うようにする。

Boost C++の構築

Sun Studio 9を使用してBoost C++ライブラリをビルドする。

まず、Boost構築ツールjamをビルドする

work$ cd boost_1_31_0/tools/build/jam_src
jam_src$ ./build.sh sunpro
  :

次に、Boostをビルドする

jam_src$ cd ../../..
boost_1_31_0$ export PYTHON_ROOT=/opt/sfw
boost_1_31_0$ export PYTHON_VERSION=2.2
boost_1_31_0$ bjam -sTOOLS=sunpro
問題と解決の履歴
  1. boost-jamの構築時にdon't know how to make ... エラー
    ./bootstrap.sunpro/jam0 -f build.jam --toolset=sunpro --toolset-root=/opt/SUNWspro/
    don't know how to make yyacc.c
    don't know how to make mkjambase.c
       :
    
    PATHに/usr/ccs/binを追加すればクリア
  2. boost構築時のコンパイルエラー(1)
    std::numeric_limits<unsigned long long>が多重に定義されています。
    http://lists.boost.org/MailArchives/boost-users/msg06700.php
    に関係しそうな記載がある。この問題であれば2004年5月にFixしているが、boost 1.31.0は2004年2月なのでCVSからソースを持ってくるしかない。

boostのライブラリはヘッダーファイル提供が多いので、ビルドに失敗しても一部は利用可能。

環境構築

Apache 2.x

Solaris標準搭載Apacheパッケージの削除

Solaris 9には、標準でApache 1.3.29が搭載されている。

$ pkginfo | grep Apache
system      SUNWaclg                         Apache Common Logging
system      SUNWapchd                        Apache Web Server Documentation
system      SUNWapchr                        Apache Web Server (root)
system      SUNWapchu                        Apache Web Server (usr)
$

まずこれらパッケージは削除します。SUNWapchrへの依存関係を持つ別パッケージSUNWipplr、SFWserwbがあるので、これらも削除する。(SUNWipplrは、"Internet Printing Protocol(IPP) ilstener"でApacheの設定ファイルのみ、SFWserwbは、"web interface for Ser SIP Express Router")

SUNWaclgについては、Sun ONE Application Serverなど大物が依存しているのでそのまま残す。

$ su
# pkgrm SUNWapchd SUNWapchu SUNWipplr SFWserwb SUNWapchr 
    :
# 

Apache 2.x インストール方法の選択〜バイナリパッケージかソースからビルドか

Sunfreewareサイトに、Apache 2.0.52のバイナリパッケージが置かれています。これを入れるのが楽ですが、configure設定が違う場合は自分でソースからビルドします。

以下がバイナリパッケージのconfigureオプションです。

./configure --prefix=/usr/local/apache2 --enable-mods-shared=all 
 --enable-ssl=shared --enable-ssl --with-ssl=/usr/local/ssl

Apache 2.0.52のUNIX用ソースを入手・展開

work$ tar xvjf httpd-2.0.52.tar.bz2
    :
work$ cd httpd-2.0.52
httpd-2.0.52$ 

configure、make、make install

情報少なくて悩んだところ。まずはオプションの調査から。

オプション 内容 デフォルト 指定例
--prefix インストール先ディレクトリ /usr/local/apache2
--enable-dav WebDAV shared
--enable-dav-fs
--enable-mods-shared all
--enable-rewrite shared
--enable-so DSO有効
--enable-speling shared
--enable-ssl shared
--with-apr
--with-ssl OpenSSLインストールディレクトリ /usr/local/ssl
--with-z zlibインストールディレクトリ
Sun Studio 9でビルドすると・・・
httpd-2.0.52$ CC=cc ./configure --enable-so --enable-dav --enable-rewrite \
 --enable-speling --enable-ssl --with-ssl=/usr/local/ssl
    :
httpd-2.0.52$ make
    :
コンパイルエラー発生

--enable-spellingを外すとエラーがなくなるようです。

GCC 3.3でビルドすると・・・
httpd-2.0.52$ LD_LIBRARY_PATH=/usr/local/ssl/lib ./configure --enable-so \
 --enable-dav --enable-rewrite --enable-speling --enable-ssl --with-ssl=/usr/local/ssl
    :
httpd-2.0.52$ make
WebDAV対応

RFC 2291およびRFC 2518で定義された分散オーサリング・バージョン管理プロトコルを持つHTTP拡張です。Apacheのconfigure時に、--enable-davとします。

httpd-2.0.52$ CC=cc ./configure --prefix=/usr/local/apache --enable-mods-shared=all
 --enable-ssl=shared --enable-dav=shared --enable-rewrite --with-ssl=/usr/local/ssl
    :
httpd-2.0.52$ make
    :
httpd-2.0.52$ make install
    :
httpd-2.0.52$

GCC 3.3でビルド

httpd-2.0.52$ ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all
 --enable-ssl=shared --enable-dav=shared --enable-rewrite --enable-spelling
 --with-ssl=/usr/local/ssl
    :
httpd-2.0.52$ gmake
    :
httpd-2.0.52$ gmake install
    :
httpd-2.0.52$

設定ファイル:httpd.conf

起動するホスト名、ユーザ・グループ名の設定
  1. ServerName
    コメントアウトを解除し、サーバー名を記述
  2. Group
    #-1 を nobody に修正
WebDAV関連設定
  1. <Location>ディレクティブでWebDAV用ディレクトリの指定(最低限設定)
    DAVLockDB /usr/local/apache/logs/DAVLock
    Alias /dav "/export/home/webdav"
    <Location /dav>
        DAV on
    </Location>

/usr/local/apache/logsのディレクトリは、ユーザnobody、グループnobodyに変更しておきます。/export/home/webdavディレクトリを作成し、これもユーザnobody、グループnobodyに変更します。

  1. mod_encodingの設定
    LoadFile /usr/local/lib/libiconv.so
    LoadModule encoding_module modules/mod_encoding.so
    <IfModule mod_encoding.c>
    EncodingEngine    on
    NormalizeUsername on
    SetServerEncoding UTF-8
    DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
    AddClientEncoding "cadaver/" EUC-JP
    <IfModule>

WebDAV関連

クライアントからのアクセス
Windows 2000
「マイ ネットワーク」の”ネットワークプレ-スの追加”から、WebDAV用URLを指定し作成します。Windows 2000の場合、日本語のフォルダ名やファイル名をUTF-8ではなくSJISで送るため、Apache側のUTF-8と合わずに事実上日本語が使えません。Windows XPならOKだそうです。Windows 2000がクライアントにいる場合、Apacheにmod_encodingを追加します。
mod_encodingによる日本語リソース名対応

まず、iconv_hookライブラリをビルドします。続いて、mod_encodingをビルドします。WebDAV Resources JPサイトから以下のファイルを入手できます(2004年12月現在)

  1. mod_encoding-20021209.tar.gz
  2. mod_encoding.c.apache2.20040616

1.は、対象がApache 1.3となっているので分かりにくいですがApache 2でも必要です。まず1.を展開し、中に含まれるmod_encoding.cファイルを2.に差し替えます。

work$ tar xzf mod_encoding-20021209.tar.gz
work$ cd mod_encoding-20021209
mod_encoding-20021209$ cp ../mod_encoding.c.apache2.20040616 mod_encoding.c
mod_encoding-20021209$ 

iconv_hookのビルド

GCC以外のコンパイラではビルドができない模様。

mod_encoding-20021209$ cd lib
lib$ CC=cc ./configure
  :
checking for gcc... (cached) gcc
checking whether the C compiler (gcc ) works... no
configure: error: installation or configuration problem: C compiler cannot
 create executables.
lib$

仕方が無いので、PATHをGCC-3用に変更してconfigureすることに。

mod_encoding-20021209$ cd lib
lib$ ./configure
lib$ gmake
lib$ su
# gmake install

mod_encodingのビルド

書籍「WebDAVシステム構築ガイド」を元に、Sun Cコンパイラ用に手順修正。

mod_encoding-20021209$ CC=cc ./configure \
 --with-apxs=/usr/local/apache/bin/apxs
  :
mod_encoding-20021209$ /usr/local/apache/bin/apxs -c mod_encoding.c
mod_encoding-20021209$ cc -G -o mod_encoding.so -Kpic mod_encoding.c \
 -I/usr/local/apache/include -I/usr/local/include \
 -L/usr/local/lib -liconv_hook
  :
mod_encoding-20021209$ su
# cp mod_encoding.so /usr/local/apache/modules/
#

Subversion

新生バージョン管理ツールのSubversionです。

入手:バイナリかソースか

Sunfreewareサイトからバイナリ・パッケージを入手することができます。(日本のミラーサイト[SunSITE]) ややバージョンが古いです。

ソースから構築するのは、必要なライブラリやツールが多々あって面倒です。

バイナリパッケージをインストールするのに必要なもの

2004年12月16日現在

これらはいずれも、Sunfreewareサイトからバイナリパッケージとして入手できます。なお、Solaris Software Companio CDをインストールしていると、GCCについてはGCC 3.3が/opt/sfw/gcc-3以下に入っています。

コマンド実行

subversionのコマンドは、/usr/local/binにあります。必要なライブラリは/usr/local/libおよb/opt/sfw/gcc-3/libにあります。これらを環境変数に設定します。

環境変数 必要なパス
PATH /usr/local/bin
LD_LIBRARY_PATH /usr/local/lib
/opt/sfw/gcc-3/

サーバー実行

subvresionのサーバー機能は、inetd経由で実行する方法、デーモンで実行する方法があります。

inetd経由

/etc/services、/etc/inetd.confにSubversionの設定を記述します。SVNサーバはデフォルトでは3690ポートを使用することが公的に割り当てられています。

/etc/services に記述
svnserve  3690/tcp              # Subversion server
svnserve  3690/udp              # Subversion server
/etc/inetd.conf に記述
# Subversion server
svnserve   stream  tcp  nowait  svn  /usr/local/bin/svnserve svnserve -i
 -r /export/home/svn/repositories

なお、上記記述はsvnserveをユーザsvnで実行させる設定です。

subversionのバイナリパッケージを入れる場合、GCC-3のライブラリも/usr/local/libにあることを前提としています。しかし、SunFreewareのGCC-3ライブラリは/opt/sfw/gcc-3/libにあるため、何らかの方法でGCC-3のライブラリのパスを指定する必要があります。Solarisだと、以下の方法が考えられます。

  1. ライブラリファイルのビルド時に初めから依存するライブラリのパスを埋め込んでおく方法(RUN PATH)
  2. 環境変数LD_LIBRARY_PATHを実行時に設定しておく方法
  3. /var/ld/ld.configファイルに動的リンク検索パスを設定しておく方法
  4. 標準で検索されるパス(/usr/lib)にシンボリックリンクを置いておく方法

などが考えられます。バイナリパッケージの場合1は困難です。2.はinetd経由の場合どこに環境変数を設定するのか不明です。4.はあまりにダーティなやり方なので、3.がよさそうです。

/var/ld/ld.configファイルを初期ライブラリパス/usr/libで新規作成

# crle -c /var/ld/ld.config -l /usr/lib
# crle

Configuration file [version 4]: /var/ld/ld.config
  デフォルトライブラリパス (ELF):       /usr/lib
  トラステッドディレクトリ (ELF):       /usr/lib/secure (システムデフォルト)

コマンド行:
  crle -c /var/ld/ld.config -l /usr/lib

#

続いて、/usr/local/lib、/opt/sfw/gcc-3/lib をライブラリ検索パスに追加

# crle -u -l /usr/local/lib:/opt/sfw/gcc-3/lib
# crle

Configuration file [version 4]: /var/ld/ld.config
  デフォルトライブラリパス (ELF):       /usr/lib:/usr/local/lib:/opt/sfw/gcc-3/l
ib
  トラステッドディレクトリ (ELF):       /usr/lib/secure (システムデフォルト)

コマンド行:
  crle -c /var/ld/ld.config -l /usr/lib:/usr/local/lib:/opt/sfw/gcc-3/lib

#

リポジトリ初期作成

順番が逆転したかもしれませんが、リポジトリを作成します。上記サーバー設定で、svnserveは/export/home/svn/repositories をルートディレクトリして公開するようになります。そこで、各プロジェクトのトップディレクトリは、この/export/home/svn/repositories直下に作成します。

svn$ mkdir repositories
svn$ cd repositories
repositories$ svnadmin create helloagain
repositories$ ls
helloagain/
repositories$ cd helloagain
helloagain$ ls
README.txt   dav/         format      locks/
conf/        db/          hooks/
helloagain$

Subversionでは、アクセス制御についてはリポジトリ毎に作成されるconf/svnserve.confに記述します。

/export/home/svn/repositories/helloagain/conf/svnserver.conf に記述
[general]
anon-access = none
auth-access = write
password-db = /export/home/svn/conf/password
匿名でのアクセスは不許可、認証されたアクセスは書き込み可能、ユーザー管理情報は別ファイル(password)に記載します。ファイルパスは絶対パスでも相対パスでも可。
/export/home/svn/conf/password に記述
[users]
tom = cat
jerry = rat
subversionのログイン名とパスワードを定義します。

匿名アクセスは不可、認証済みアクセスは読み書き可、認証用パスワードファイルは外部ファイル/export/home/svn/conf/passwordに記載。

Apache Jakarta Tomcat 5.5.x

Apache FoundationのJakartaプロジェクトで開発されているServlet/JSPサーバTomcatを設定する。Tomcat 5.5.xは、J2SE 5.0(通称Tiger)に対応したTomcatのバージョンであり、Servlet 2.4/JSP 2.0仕様に対応している。

入手と展開

Apache Jakartaプロジェクトのサイトから、Tomcat 5.5.xバイナリ版を入手する。2004年1月5日現在、安定版は5.5.4である。

/usr/local の直下に上記ファイルを解凍・展開する。

work$ cd /usr/local
local$ su
# tar xvzf ~/work/jakarta-tomcat-5.5.4.tar.gz
   :
# 

Administration Toolは別パッケージ化されているので、Tomcat 5.5.xバイナリ版の並びにあるパッケージを入手する。

/usr/localの直下にこのファイルを解凍・展開すれば、tomcat-5.5.4本体のディレクトリ構成の上に上書きインストールできる。AdministrationToolを使用するには、conf/tomcat-users.xmlに管理ユーザを設定しておく必要がある。

$CATALINA_HOME/conf/tomcat-users.xmlを編集

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <role rolename="root"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="root" password="root" roles="root,admin,manager,tomcat"/>
</tomcat-users>

単独起動

JDKのパスを指定する環境変数JAVA_HOME、Tomcatのパスを指定する環境変数CATALINA_HOME、およびTomcatのJavaライブラリを指定する環境変数CLASSPATHを設定しておき、$CATALINA_HOME/bin/startup.shを実行する。

# bash
$ export JAVA_HOME=/usr/jdk/jdk1.5.0_01
$ export CATALINA_HOME=/usr/local/jakarta-tomcat-5.5.4
$ export CLASSPATH=.:$CATALINA_HOME/common/lib/servlet-api.jar
:$CATALINA_HOME/common/lib/jsp-api.jar
$ $CATALINA_HOME/bin/startup.sh
Using CATALINA_BASE:   /usr/local/jakarta-5.5.4
Using CATALINA_HOME:   /usr/local/jakarta-5.5.4
Using CATALINA_TMPDIR: /usr/local/jakarta-5.5.4/temp
Using JAVA_HOME:       /usr/jdk/jdk1.5.0_01
$

エラーなく終了すれば、別マシンからポート8080をHTTPで叩き、動作確認する。

終了時は、$CATALINA_HOME/bin/shutdown.sh を実行する。

デーモン起動

UNIX環境においてデーモン起動するためのコマンドjsvcがTomcatに添付されている。しかし、これはソースファイルとして添付しているので、自力でビルドする必要がある。

# cd $CATALINA_HOME/bin
# tar xzf jsvc.tar.gz
# cd jsvc-src
# PATH=$PATH:/opt/sfw/gcc-3/bin:/opt/sfw/bin:/usr/ccs/bin:/usr/ucb
# autoconf
# chmod +x configure
# ./configure
    :
# gmake
    :
# cp jsvc ..
# cd $CATALINA_HOME
# ./bin/jsvc -Djava.endorsed.dirs=./common/endorsed -cp ./bin/bootstrap.jar
 -outfile ./logs/catalina.out -errfile ./logs/catalina.err
 org.apache.catalina.startup.Bootstrap
#

終了時は、直接プロセスIDを指定してkill を実行する。

# cat /var/run/jsvc.pid
1234
# kill 1234
#

自動起動

init.d用の雛型ファイルが提供されているので適宜修正して然るべき場所へ置く。

$CATALINA_HOME/bin/jsvc-src/native/Tomcat5.shを修正
#!/bin/sh
JAVA_HOME=/usr/jdk/jdk1.5.0_01
CATALINA_HOME=/usr/local/jakarta-tomcat-5.5.4
DAEMON_HOME=/usr/local/jakarta-tomcat-5.5.4
TOMCAT_USER=root
TMP_DIR=/var/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

case "$1" in
  start)
    $DAEMON_HOME/bin/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    ;;

  stop)
    PID=`cat /var/run/jsvc.pid`
    kill $PID
    ;;

  *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
esac
# cd /usr/local/jakarta-tomcat-5.5.4/bin/jsvc-src/native
# cp Tomcat5.sh /etc/init.d
# chmod u+x Tomcat5.sh
# ln Tomcat5.sh /etc/rc3.d/S99tomcat
# ln Tomcat5.sh /etc/rc0.d/K00tomcat

環境設定

Apache Jakarta Slide

WebDAVの実装系の1つ。J2EE Webアプリケーションとしてパッケージされているため、Servlet/JSP環境上で動作する。

入手とインストール

Apache Jakartaプロジェクトのサイトから、Slideバイナリ版を入手する。2005年1月5日現在、安定版は2.1である。

ワーク領域に展開し、jakarta-slide-server-bin-2.1/slide/webappディレクトリの中にあるslide.warとslide-doc.warファイルを、Tomcat5のwebappsディレクトリにコピーする。Tomcatを再起動する。

http://localhost:8080/slide/ とアクセスする。

設定

MySQL

リレーショナルデータベース管理システムの1つ。

Solaris 9 のCompanion CDには、mysql 4.0.15が含まれている。

$ pkginfo -l SFWmysql
   PKGINST:  SFWmysql
      NAME:  mysql - MySQL Database Management System
  CATEGORY:  system
      ARCH:  i386
   VERSION:  4.0.15,REV=2004.07.08.10.24
   BASEDIR:  /opt
    VENDOR:  http://www.mysql.com
 (以下略)

SFW版MySQLの設定

/opt/sfw/READMEs/README.SFWmysql を読んで設定を実施する。

データベース初期化
# /opt/sfw/mysql/bin/mysql_install_db
#

/opt/sfw/mysql/var にデータベースファイル等が生成される。別なディレクトリをデータベースファイル領域とする場合、オプションで指定できる模様。

MySQL専用ユーザを作成する。
# groupadd mysql
# useradd -g mysql -d /export/home/mysql -s /bin/bash -m mysql
# usermod -d /home/mysql mysql
#

mysqlユーザで必要なディレクトリにアクセスできるようアクセス権を変更する

# chown -R root /opt/sfw/mysql
# chown -R mysql /opt/sfw/mysql/var
# chgrp -R mysql /opt/sfw/mysql
# chmod -R g+w /opt/sfw/mysql
#
設定ファイルmy.cnfの雛型をコピー
# cp /opt/sfw/mysql/share/mysql/my_medium.cnf /opt/sfw/mysql/var/my.cnf
#
手動実行と停止

実行

# su 
# /opt/sfw/mysql/bin/mysqld_safe --user=mysql
#

停止

# /opt/sfw/mysql/bin/mysqladmin -u root shutdown
#
動作確認
$ /opt/sfw/mysql/bin/mysqladmin version
/opt/sfw/mysql/bin/mysqladmin  Ver 8.40 Distrib 4.0.15, for pc-solaris2.9 on i386
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version     4.0.15-log
Protocol version   10
Connection         Localhost via UNIX socket
UNIX socket        /tmp/mysql.sock
Uptime:            1 min 10 sec

Threads: 1  Questions: 1  Slow queries: 0  Opens: 6  Flush tables: 1
Open tables: 0  Queries per second avg: 0.014
$
自動実行・シャットダウンの設定
# cp /opt/sfw/mysql/share/mysql/mysql.server /etc/init.d/mysql.server
# ln /etc/init.d/mysql.server /etc/rc3.d/S99mysql
# ln /etc/init.d/mysql.server /etc/rc0.d/K00mysql
# ln /etc/init.d/mysql.server /etc/rc1.d/K00mysql
# ln /etc/init.d/mysql.server /etc/rc2.d/K00mysql
# ln /etc/init.d/mysql.server /etc/rcS.d/K00mysql
#
ユーザの作成

データベース起動後、rootで接続し、GRANTコマンドを使用する。

$ mysql -u root -p
Enter password:
    :
mysql>

最新版の入手とインストール

MySQLのサイト日本のミラーサイト)から、Solaris 9(x86, 32bit)バイナリをダウンロードする。バイナリには、Standard版/Max版/Debug版がある。Standard版とMax版の違いは、クラスター、Berkeley DBエンジン、その他テスト不十分な追加機能が入っているか否かである。通常はStandard版を選べばよい。

Solaris標準tarコマンドにはバグがあるため、GNUtarで展開する。以下/optの下に置く前提で進める。
展開した中にINSTALL-BINARYがあるのでインストール手順はこれを参照する。

# cd /opt
# /usr/sfw/bin/gtar xzf /tmp/mysql-standard-4.1.8-pc-solaris2.9-i386.tar.gz

Scarab - Issue Tracking System

バグ管理システムの1つ。Javaで書かれたWebベースプログラム。Issueは、バグに限らず解決すべき課題を指す。

入手

Scarabのサイトから最新版をダウンロードする。

$ cd work
$ /usr/sfw/bin/gtar xzf scarab-1.0-b19.tar.gz

Tomcat 4.1.29が同梱されている。

ビルド

JDKおよびAntが必要となる。

ビルド設定ファイル build.propertiesの作成

build/default.propertiesに初期設定が書かれている。このファイルは変更せずに、build/build.propertiesファイルを新規作成し、設定をオーバーライドする。

scrab.system.mail.host=???
データベースのユーザー設定

MySQLにユーザーscarabを作成する

work$ mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON scarab.* TO scarab@localhost;
Query OK, 0 rows affected(0.09 sec)

mysql>
ビルド実行

Scarabのビルドを実行する。

scarab-1.0-b19$ export JAVA_HOME=/usr/jdk/j2sdk1.4.2_05
scarab-1.0-b19$ export ANT_HOME=/usr/local/java/apache-ant-1.5.4
scarab-1.0-b19$ PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
scarab-1.0-b19$ PATH=$PATH:/opt/sfw/mysql/bin
scarab-1.0-b19$ cd build
build$ ant
   :

データベースの初期化を実行する。

build$ ant create-db
   :

scarabの実行

実行時環境設定

target/scarab/WEB-INF/conf/CustomSettings.propertiesを編集する。

実行用シェルの用意

実行用シェルに実行権限を付加する。

scarab-1.0-b19$ cd tomcat/bin
bin$ chmod +x catalina.sh
bin$ chmod +x startup.sh
bin$
実行

Scarab同梱のTomcatを実行する。

bin$ ./startup.sh
Using CATALINA_BASE:   /export/home/torutk/work/scarab-1.0-b19/tomcat
Using CATALINA_HOME:   /export/home/torutk/work/scarab-1.0-b19/tomcat
Using CATALINA_TMPDIR: /export/home/torutk/work/scarab-1.0-b19/tomcat/temp
Using JAVA_HOME:       /usr/jdk/j2sdk1.4.2_05
bin$

scarabの利用

ブラウザで、http://localhost:8080/scarab/にアクセスする。

デフォルト設定を変更していなければ、ユーザー名Administrator、パスワード1でアクセスできる。

Sun Studio 9詳細

C++コンパイラ

使用方法

コンパイラオプション

最適化オプション
-xtarget=t
CPUセットに最適となるオプションを指定する。IA32プラットフォームの場合は以下の選択肢がある。
tに指定する値 内容
generic x86系CPUどれでも動作するコードを生成。
native コンパイルを実行しているCPUを判別し、そのCPUに最適となるコードを生成
386 80386 CPUで最適となるコードを生成
486 80486 CPUで最適となるコードを生成
pentium Pentium CPUで最適となるコードを生成
pentium_pro Pentium Pro CPUで最適となるコードを生成
pentium3 Pentium3 CPUで最適となるコードを生成
pentium4 Pentium4 CPUで最適となるコードを生成