Path: phoebe.st.ryukoku.ac.jp!rinsgw!wnoc-kyo-news!kuis-news!sakura.kudpc!sakunami!tegata!center
From: center@ipc.akita-u.ac.jp (Center Developments)
Newsgroups: fj.sys.ews4800
Subject: Install Tips
Followup-To: fj.sys.ews4800
Date: 17 Jul 1997 04:23:58 GMT
Organization: Information Processing Center, Akita Univ., Akita, JAPAN
Lines: 102
Message-ID:
NNTP-Posting-Host: quartet.ipc.akita-u.ac.jp
quatet.akita-u.ac.jp で NEC EWS4800 用のパッチを作っておいている ot22
です.
# ot22はメイルアドレスではありません ^^;
ここのところ, いくつか質問が出ていたようなので, 以下のような文章を作っ
てみました.
-------------
フリーソフトを NEC EWS4800 にインストールする場合のヒント
学内サービス向けに NEC EWS4800 用のフリーソフトのパッチを作ってきまし
たが, パッチ作成上の比較的簡単なヒントをまとめておきます.
0. OS Version によってかなり動作が異なり点はご注意下さい.
1. 現在, 多くのフリーソフトは configure を使って初期設定を行っています
が, NECの機械を認識させるようにする. config.guess に対応するものを入れ
る.
2. サポートされていない場合, solaris 2 と思わせれば大部分のものはうま
くいくようである. solaris用の設定ファイルの名前を付け替えるだけで済む
場合がある.
3. 将来のことを考えて, 利用する C コンパイラはnecccs は利用しないよう
にする. abiccs か gcc を利用する. gcc も内部で利用しているものは
abiccs のコンパイラである.
4. position independent コードを作成する場合, C コンパイラへの指定方法
が他の機種のコンパイラと異なる. 指定がある場合には変更する. 他の機種の
場合, -fPIC や -K PIC などと指定されているので -Kconform_pic に変更す
る.
5. /usr/local/bin を $PATH に含めると, 妙な副作用が生じる場合があるの
で, configure 実行時に $PATH からはずしておいた方がよいようである.
CC(C++コンパイラ)のかわりに g++ を, システム提供の make の代わりに GNU
make を利用するような場合は別である.
秋田大学で行っている方法は以下の通りである.
o config.guess, configure に対して NEC EWS4800 を認識するように変更する.
このあたりは, 既存のパッチを見て頂きたい.
o NEC EWS4800 がサポートされていず, solaris 2がサポートされている場合には,
solaris 2の設定を参考に各種ファイルを変更する.
o 通常は K shell を利用しているので, GNU make, g++ などを利用したい場合
には, alias を使ってごまかす.
alias make=/usr/local/bin/make
o 次のような B shell 用のスクリプトを作成し実行する.
PATH=/sbin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/ucb:/usr/ccs/bin
CC=/usr/abiccs/bin/cc
CFLAGS='-Kopt=2 -KOlimit=2000'
export CC CFLAGS PATH
./configure 必要なオプション
これで作成された Makefile で make する. コンパイルオプションなどが変
更する必要があれば Makefile を編集する.
ここまでに述べてきた方法でうまくいかない場合を列挙する.
1. strcasecmp などの, BSD 用のライブラリを利用している.
ソースの中で *CASE* という define 文がないか調べる. もしあれば,
Makefile 中の C コンパイラのスイッチ CFLAGS に -D*CASE* を追加してみ
る. 最後の手段として, BSD ライブラリを利用するために, ld 時のライブ
ラリとして -L/usr/abiccs/ucblib -lucb を追加してみる. これは古い OS
バージョンでは危険なので十分注意する.
2. socket ライブラリ, nsl ライブラリを configure が解決してくれない.
リンク時に gethostbyname, socket という名前が解決されない旨のメッセー
ジが出る場合がそうである. Makefile 中の LIBS に -lnsl -lsocket を追加
してみる.
3. X window関係のライブラリの指定がおかしい.
configure のオプションの --x-includes, --x-libraries に対して
--x-libraries=/usr/abiccs/lib/X11R6 など正確なものを指定してやる.
シェルスクリプト上で LIBS='-lnsl -lsocket' を指定して実行するとうま
くいく場合がある.
4. どうもうまくいかない.
4.1. solaris とごまかしきれていない.
ソース中に
#if defined(solaris)
などで指定された行がないか調べてみる. 具体的には grep olaris *.[ch] な
どである. もしあった場合,
#if defined(solaris) || defined(_nec_ews)
のように変更してみる.
4.2 C コンパイラの制限からくる問題
システム提供の C コンパイラでは
cc -o dir/mnyamnya.o -c dir/mnyamnya.c
のように入力しても, 出力は dir/mnyamnya.o にならず ./mnynamnya.o に
なってしまう. このような場合,
o 作成されたオブジェクトを一つ一つ位置を移動させて make を続行する
o 力業で Makefile を書き換えてしまう
などで対応する.