B-right/V開発環境(bv-gsdk)インストールメモ (17-May-1999)
入口へ

TurboLinux2.0日本語版(TL2.0Jと表記します)にB-right/V開発環境(bv-gsdk)をインストールしたよというお話です。試行錯誤しながらやっているので、思いっきり嘘書いているかもしれません。
また、書かれている内容が突然変化することもありますので御注意下さい。
そうそう、これはあくまでも「自分(Aralia/uaa)が試行錯誤してやったらとりあえず使えるようになったかな」というメモ書きですので、この通りにやって動かなくても文句を言わないで欲しいし、「へっ、俺だったらもっとスマートな方法を使うね」という方は是非その方法を教えて下さい。
インストールするディレクトリ
説明書通りに、/usr/brightv/に入れました。
gcc(Linux)
新しいものを使いましょう。私の場合、TL2.0Jに入っているgcc-2.7.2.3-8.i386.rpmだとコンパイルの途中でInternal compiler errorを吐いてコンパイルができなかったので、Vine Linuxのサイトに転がっていたgcc-2.7.2.3-14.i386.rpmを使って開発環境をコンパイルしました。
makeとperlとjperl
TL2.0Jの場合この3つは/usr/bin/に入っています。bv-gsdkは/usr/local/bin/のperlとjperlを要求しますので、シンボリックリンクを張ってごまかしました。
ln -s /usr/bin/perl /usr/local/bin/perl
ln -s /usr/bin/jperl /usr/local/bin/jperl
こんな感じに、です。本当はこういうのって良くないんでしょうけど…
cpp?
cppは/usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/にあるので、ここから/usr/lib/(もしくは/usr/ccs/lib/)にシンボリックリンクを張ってごまかします。
環境変数
.bash_profileに
export BD=/usr/brightv
export GNUs=/usr
export GNU_BD=$BD/tool/gnu
export GNUi386=$GNU_BD/i386-unknown-gnu
と書いときました。
chown, chgrp
展開したままだと誰だかわからないユーザー名のファイルになり、rootじゃないと編集できないのでchown -R uaa /usr/brightv/とかして所有者を強引に変更(^^;ついでにグループも適当に変更(^^;(^^;
binutils-2.8.1のコンパイル
とりあえず、./configureで様子を見て、それから説明書に書かれているように./configure --prefix=/usr/brightv/tool/gnu --host=i586-pc-linux-gnu --target=i386-unknown-gnuでコンフィギュレーションして、make; make install。
--target=(以下略)を忘れて大変な目にあいました(^^;
ヘッダファイル
tool/gnu/ReadMeには「新規に gcc を生成するときは、下記のものをコピーして使用してください。」と書いてあるのですがいまいちよー分からないので、ln -s /usr/brightv/tool/gnu/i386-unknown-gnu/include /usr/brightv/tool/gnu/src/gcc-2.7.2/includeしときました。
gcc-2.7.2のコンパイル
./configureで様子見して、./configure --prefix=/usr/brightv/tool/gnu --host=i586-unknown-linux --target=i386-unknown-gnu --with-gnu-as --with-gnu-ld。--hostの指定がbinutilsと違うので注意。で、これもmake; make install…すると失敗します。インストールは説明書をちゃんと読んでからやりましょう。
tool/gnu/i386-unknown-gnu/bin/gcc386
最初の「#!/usr/bin/sh」を「#!/bin/sh」に書き換えないとシェルスクリプトが実行できません(これって、基本中の基本?)。また、GNU_BDの設定もbv-gsdkをインストールしたディレクトリに書き換える必要があります。
3B/V用の設定変更
tool/gnu/lib/gcc-lib/i386-unknown-gnu/2.7.2.1/にあるspecsを書き換えます。すでに書き換えられているspecs.3bvがありますので、cpコマンドなどで上書きすれば良いでしょう。元のspcesは、specs.orgと同一です。
また、tool/gnu/i386-unknown-gnu/lib/ldscripts/のi386mach.x、i386mach.xbn、i386mach.xn、i386mach.xr、i386mach.xs、i386mach.xuも、3bv/の中にあるそれぞれのファイルを参考にして書き換えるのですが…SEARCH_DIRを書き換えないといけないので結構面倒です。4つくらいあるかな。
これも、ORG/の中にオリジナルが入っています。
14-Jan-2009補足:新たに開発環境を構築する際の参考になるかどうかは分かりませんが、tool/gnu/i386-unknown-gnu/lib/ldscripts/の内容tool/gnu/lib/gcc-lib/i386-unknown-gnu/2.7.2.1/の内容(specs関連に限定しています)を載せておきます。
etc/mymake
#!/usr/bin/cshを#!/bin/cshに変更。BD、GNUsその他もろもろを先程設定した環境変数と同じように設定。
etc/makerules
「# コマンドパス」の項目にある、「ifdef CCS」の手前にあるPATHの設定に、/bin/を追加。こうしないと、コマンドが見つからないよ〜と言われてしまいます。
他にも、gccがあるディレクトリを直接指定したりいろいろごちゃごちゃやりました。このファイルの設定が一番てこずると思うので、diffで作った差分を置いときます。<で示されるのが書き換える前、>で示されるのが書き換えた後です。
このファイルの設定は、Gean-canoghさんとこの差分を参考にしました。Thanks!!
cppの-Yオプション
Solaris 2.6のmanにはこんなことが書かれてました。
-YdirectoryUse directory directory in place of the stan-dard list of directories when searching for #include files.
#includeファイルを標準で指定されているディレクトリからではなく、directoryから検索しちゃうよ、と解釈すればいいのかな。だとすると、TurboLinuxのmanにはこんなことが書かれているから、これを参考にすればいいのかも。まだ試してないけど。
-nostdincヘッダファイルのための標準のシステムディレクトリを検索しません。`-I' オプションによって指定したディレクトリ (またはカレントディレクトリ) のみを検索します。
`-nostdinc' と `-I-'を使用することにより、インクルードファイルの検索パスを明示的に指定したディレクトリのみに限定することが可能となります。
kayamaさん(リンク張っちゃっていいでしょうか?よく分からないので張っていませんが…)の話によると、-Ydirectoryは-nostdinc -idirafter directoryに相当するそうです。ちょっぴり嘘書いてました>俺
gccが「cpp」と「cc1」が見つからんぜよ、と駄々をこねる対策
TL2.0Jだとgccが/usr/bin/にあります。で、cc1とcppは/usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/にあるので、gccと同じディレクトリにln -sでシンボリックリンクを作成っと。
じゃあ、/usr/lib/に張ったリンクは一体??
tool/toolにあるツール類のコンパイル
src/Makefileがsun4仕様になっているのでこれをlinuxとでも書き直して、sun4/をlinux/にリネーム。で、make; make install。Warningが出ても気にしない。
tool/databoxのコンパイル
これも、sun4/をlinux/にリネーム。後は何も考えずにmake; make installでイケます。
tool/gtermのコンパイル
sun4/をlinux/にリネーム。Makefilesには手を入れずにmake。エラーの嵐でコンパイルが通らない。devio.cを書き換える必要があるのかな。
tool/tool/src/mkbtf.c
最初の#define Free(n) free(p)#define Free(n) free(n)に書き換えないと、appl/sample2をコンパイルするときにcore吐いて落ちます(--;
(この解決法もGean-canoghさんに教えて頂きました。ありがとうございます)
コンソールのtelnetで出てくるteletype-33
どうもtty33のことみたいなんですが…あまりにも非力で、muleは仕方ないとしてもviすら動かないという…(;_;)
コンソールのtelnetは「とりあえずの確認用」として使う代物のような気がします。

入口へ

uaa@uaa.org.uk 17-May-1999