Subject: Install Tips
From: [email-masked] (Center Developments)
Date: 17 Jul 1997 04:23:58 GMT
Newsgroups: fj.sys.ews4800

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 を書き換えてしまう

   などで対応する.