現在,インテルアーキテクチャで動作するLinuxマシンにGCCを導入することは簡単です.実際,インストールのためのパッケージやバイナリが数多く配布されています.それらを利用することで,とくに悩む必要はなくなりました.
それでも通常のインストールが必要な環境の場合もあるので,詳細を説明をします.
● MS-DOSの場合
本連載では,基本的にLinuxで動作するGNUツールを扱っていく予定ですが,他の環境で動作するGCCについて少し説明しておきます.
「素の」MS-DOSはあまり使われなくなってきていると思いますが,組み込み用途などではまだ活躍しています.この環境でGCCを動作させるなら,DJGPPというツールをインストールしなくてはなりません.このセットには,DOS-Extenderツールが含まれているので,32ビット処理が可能になります.
公式サイトを図1に示します.
また,特殊な用途になりますが,「8086」プロセッサ環境の16ビットMS-DOSにもインストール可能です.図2に示すWebページからダウンロードできます.
もちろん,LinuxなどのGCCとそのまま同じではなく,以下のような制約があります.
・farポインタが使用できない
・doubleおよびfloatが使用できない
・コードが64Kバイト,データが64Kバイト以上使用できない
・C++のconstructorsとdestructorsが使用できない
・デバッグツールがない
・ライブラリがない.また,スタートアップコードも標準のヘッダもない
この場合,リンカもDJLINKというツールを使います.
● BeOSの場合
インストールした時点でGCCが導入されているはずです.バージョンを上げる場合には,元のGCCでコンパイルが可能です.
● Mac OS Xの場合
やはり最初からGCCが導入されています.CCという名前で/usr/bin/ccにあります.
● VMSシステム
GCCのVMSバージョンは,バックアップ・セーブセットとして配布されています.ソースコードとコンパイル済みのバイナリが含まれています.
しかし,まだ多くのバグがあるようです.それを回避する策の一つは,導入した環境でバイナリを再作成することです.
● Sunにインストールする場合の注意
Solarisでは, GCCをビルドする際,/usr/ucbにあるリンカやその他のツールを使わず,/usr/ccs/binのほうにあるツールを使ってください.ビルド中にアセンブラでエラーを発生する場合があります.
その場合,最新のGNUアセンブラを使用してください.binutilsの最新版にアップグレードするか,またはSolarisのアセンブラを使ってください.
libgcc.aをコンパイルするときには,環境変数FLOAT_OPTIONがセットされていないことを確認してください.libgcc.aのコンパイル時にこのオプションがf68881にセットされていると,生成されるコードは特殊なスタートアップファイルとリンクすることを要求され,正しくリンクできなくなります.
また,Sunのライブラリのバージョンによっては,allocaにバグがあります.このバグを回避するには,GCCによってコンパイルされたGCCバイナリをインストールしてください.これは,allocaを組み込み関数として使います.ライブラリの中の関数を使うことはありません.
Sunのコンパイラのバージョンによっては,GCCをコンパイルする際にクラッシュします.問題になるのは,cppにおけるセグメンテーションフォルトです.この問題の原因は,環境変数に大量のデータが存在することにあるように思われます.SunのCCを使ってGCCをコンパイルするのに以下のコマンドを使うことによって,この問題を回避することができるかもしれません.
make CC="TERMCAP=x OBJS=x LIBFUNCS=x STAGESTUFF=x cc"
SunOS 4.1.3と4.1.3_U1にはバグがあるようで,GCCをコンパイルする際に問題が起きます.その場合,最新のOSにアップグレードしてください.
ざっと説明しましたが,このようにMS-DOSでもMac OS XでもGCCを使用することは可能です.また,VMS環境でも,もちろん商用UNIX環境にも導入が可能です.場合によっては,そのマシンで使用されるオリジナルな環境よりも効率が良いかもしれません.
|