AIDA Shinra
aida-****@jcom*****
2003年 2月 3日 (月) 17:26:17 JST
相田です。 > > #ifdef AIXV3 > > # include <sys/select.h> > > #endif > > という部分がconnection.cとWaitFor.cにありますが、ここはV3だけでなく、 > > POSIXなら必ずincludeしなければならないようです。ここをif 1にするとどう > > なりますか? > 変化ありませんでした。 > -DAIXV3 が引数についてコンパイルされていますし、ある意味当然なんでしょう。 普通はfd_setがそこで定義されているはずだと思うのですが、どこか違う場所 で定義されているのでしょうか?これもgrepしてくれると助かります。どこに も無いなら、IR.hのifdef hpuxの部分を有効にすれば一応は動くと思います。 > > これは、protodef.hの最初のifndef CBUFSIZEのために、Ushort,BYTEが未定義 > > になるのが原因のようです。ここのtypedefはifdefの外に出ているのが正しい > > はずです。ただ、普通はCBUFSIZEはここではdefineされていないと思うのです > > が、ひょっとしてシステムのヘッダにCBUFSIZEがあるのかもしれません。もし > > そうならまずいので、/usr/includeをCBUFSIZEでgrepした結果を教えてくれま > > せんか? > $ cd /usr/include > $ find . -type f -print | xargs grep CBUFSIZE > $ > という結果になりました。 define はされていないようです。 > また、 > typedef unsigned short Ushort; > typedef unsigned char BYTE; > を > #ifndef CBUFSIZE > の前に出してから make canna を実行しても、現象に変化がありません。 これはかなり変ですね。まさかBYTEがシステム定義のマクロになっているとか? それとも、fd_setでこけているせいで、全てがおかしくなっているのでしょう か? > 順序を変えさせていただきます。 > > もう一つ気になるのは、-DLONG_BIT=64という部分ですが、64ビットの環境で > > すか?もしそうなら多分まともに動かないと思います。64ビットOSの事情はよ > > く分からないので、32ビットでのコンパイルはimakeのオプション程度で出来 > > るのかどうか等教えてください。 > うーん、 フル 64bit であること最大に売りにしている OS なので 32bit には > ならないかと思います。 > この環境は、将来 64 bit OS に対応した時点で試すことにします。 > この環境が正常な環境かどうかにも、疑問があるので。 32bitバイナリを動かせる仕組みがもしあるなら、configファイルをでっちあ げてgccを使う、という大技があるのでしょうが、64ビットにきちんと対応す るのが本筋でしょうね。一応64ビット対応を考えている形跡はあるので、修正 はそれほど多くないと思いますが、なにせテスト環境が無いもので。 > > あと、できれば私にlib/X11/config/の下を送ってください。 > /usr/lib/X11/config 以下のファイルを、 tar.gz で固めてお送りします。 ありがとうございます。これから詳しく調べます。 > #> 0をnull pointerとして見てくれないのはコンパイラが悪いのでしょうが。 > #これについては、信条的に同意できないのですが、本筋ではないので... ISO C的にはキャスト無しの0がnull pointerになるべきで、とくに関数ポイン タとデータへのポインタでサイズが違うシステムでは、void *にキャストする と逆にまずいことになります。まあ、普通のUNIXでそれは無いでしょうから、 一応受け付けるけれどもwarning、というのは正しいかも知れません。