[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:001030] Re: Solved? DCL-C compile error



堀之内です。

# 高橋(FIP)さんも読んでくださいね

> ずいぶん前の話ですが,C版DCL を linux (Intel Celeron 667MHz, TurboLinux
> Server 6.1) にインストールしたときに bitpci_ が抜けてしまっていてうまく
> インストールできていない,という現象をご報告しましたが,今日になって
> ようやくエラーメッセージをちゃんと見てみました。遅くなってすいません。
> 
> 結論から申しますと,「FORTRANコンパイラをインストールするとインストール
> できる」ということでした。
...
> この対処が正しいとすれば,結局 C版DCL にはFORTRAN コンパイラが必須という
> ことになりますが,そうなんですか??

そんなことでは困ります、ということで、見てみました。
bitpci_ がインストールされない原因(直接のじゃないですが)は、
だいぶ前に指摘した bitlib.h の問題でした。神代さんがこの
MLに入る前の話なので、ご存知ないと思いますが。メールの
コピーを添付します。(今自宅からなのですが、切り取った
半端なテキストファイルになってしまい、すみません)

私がメールで訴えてるのは、linux (私の場合laser5 6.0) で configure 
すると bitlib.h がまともに出来ないので、なんとかして欲しい
ということなんですが、bitpci_ 等、問題の関数は bitlib.h の
入っている src/misc1/bitlib/ に入っています。bitpci.c 自体は
bitlib.h に依存してないので make でオブジェクトファイルが
出来るのですが、make install では他の幾つかのオブジェクト
ファイルがないことの巻き添えを食って、インストールされ
ません。ここで何故巻き添えになるかはわかりませんが、根本解決は
ちゃんと bitlib.h が出来るようにすることです。

神代さんの話から想像すると、Fortranコンパイラーがある場合は
bitlib.h が正しく出来ているのでしょう。これはヒントになり
ます。bitlib.hでは DCL_INT, DCL_REAL という
2つのマクロを定義してるだけなのですが、この話から想像するに、
Fortranの INTEGER, REAL がそれぞれCでどの型に対応するかを
記述しているのではないでしょうか。ということであれば、
f2c版では libf2c.h (or libtinyf2c.h)で型が決まってますので、
configureする必要はないです。逆にいえば、実際には使われない
Fortranコンパイラーの情報をもとにして生成されると、正しくない
ものが出来る可能性があるということでしょう。以上、DCL C版を
維持している FIP に、確認と対処を期待しますので、よろしくお
願いします。(私の予想が正しければ、bitlib.hは予め定義してし
まい configure させない)

今手元に Fortran 版の DCL がないのですが、恐らく bitlib では
もともと C のビット演算を利用してるのではないでしょうか。その
ため bitlib.h のようなものが必要になっているのだと思います。
もしそうなら、上の予想はまずあってるでしょう。これに限らず
もとのライブラリーで C を呼んでいるところは同様な問題があり得
ます。恐らく、その辺は気を使って作業されたのだろうと思いますの
で、たまたまうっかり残ってしまったものなのだろうと思います。

hori-mail.txt