システムの要件

WINシステムは、下記の要件を満たす Cygwin や MacOSX などを含む多くのUnix系環境で動きます。

  1. ポインタ長=int型=long型=4byte (つまり、32ビット環境)
  2. unsigned を付けない型は符号あり

上のシステム以外、例えば64ビット環境にある方は、コンパイルオプションなどで問題を回避する必要があります。また、一部のシステムでは char型が符号無しで解釈されるので、このような環境では一部のソフトが正常に動かなくなります。

動作実績

ここに挙げているのは、動作の実績があると報告された例であり、これ以外のシステムでは動かない、という意味ではありません。

データ交換装置・自動処理など 24時間365日稼働させることを想定したプロセス

  • FreeBSD 2〜6.X RELEASE for x86
  • SSD/Linux on OpenBlockS266
  • RedHat?
  • Turbolinux
  • Ubuntu-Server版 (8.04版の前のバージョン)
  • SH-Linux on IO-data USL-5P (参考文献:地震2, 60, 219-223, 2008.)
  • Cygwin

解析用

  • FreeBSD 2〜6.X RELEASE for x86
  • MacOSX
  • RedHat?
  • Tuebolinux
  • Vine Linux
  • SuSE Linux
  • Cygwin

コンパイルとインストール

FTP サイトに置いてあるファイルは tar+gz です。適宜ツールを用いて解凍・展開してください。

autoconf 化していますので、何もチューニングしないのであれば

% ./configure
% make
% make install

でコンパイルとインストールが出来ます。チューニングしたい場合は、INSTALL というファイルがありますのでそちらをご覧下さい。

64ビット環境の場合

64ビット環境の場合でも、コンパイラで32ビットモードがサポートされていれば動作可能です。

例えば、gcc の場合には -m32 オプションがサポートされている場合があります。その場合、

% CFLAGS="-m32 -O" LDFLAGS=-L/usr/X11R6/lib ./configure --prefix=/usr/local/win 

などとして、CFLAGS 環境変数に -m32 オプションがはいるようにすればいいです。ただし、32ビットモードのライブラリも同時にインストールされている必要がありますので、リンク時にエラーが出る場合はその点も確認してください。

その他のコンパイラをお使いの方は、それぞれのマニュアルを参照下さい。

unsigned を付けない型が符号なしの場合

C 言語の変数の型に char 型がありますが、char と宣言した場合、これが符号付きか符号付きでないかは、マシンによって違います。例えば、

Plathome OpenBlockS266 kernel: 2.4.20 ファームウエア Ver.20050119 のセルフコンパイル環境
  http://www.plathome.co.jp/products/openblocks/
  http://www.sevo.kyushu-u.ac.jp/~uehira/WIN/OpenBlockS266.html

はchar型は符号無しと解釈されます。

char 型が符号無しと解釈されるシステムの判別方法は、WIN_pkg-1.1.70 以上のバージョンでは、configure の出力の後ろの方のメッセージで確認することが出来ます。

% ./configure
checking for a BSD-compatible install... /usr/local/bin/ginstall -c
checking whether build environment is sane... yes
...
checking whether byte ordering is bigendian... no
checking whether char is unsigned... no   <--------------------- ここ!!
checking for tm.tm_gmtoff... yes
checking whether gcc needs -traditional... no
checking for working memcmp... yes
...

checking whether char is unsigned が no となっていれば大丈夫で、yes となっていると駄目です。

checking whether char is unsigned が yes となっていた場合の対処の方法ですが、コンパイラオプションで制御出来る場合があります。gcc の場合、-fsigned-char を付けます。例えば、

% CFLAGS="-fsigned-char -O" ./configure

のようにします。このようにして実行した configure の出力は、checking whether char is unsigned が no に変わっているはずなので、確認して下さい。

gcc 以外のコンパイラをお使いの方は、お手数ですが各自コンパイラのマニュアルを確認していただけますようお願いします。


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-06-23 (火) 17:23:52