新しいクライアント(X のアプリケーション)を作る場合、ソース中に
Imakefile
が含まれているなら、xmkmf
を使うのが最も簡単
でしょう。``xmkmf -a
'' と入力して Makefileを作り、必要に応じて
設定のチェックを行、それから ``make
'' と入力します。
同時にマニュアルもインストールした場合、whatis.db
を更新するために ``makewhatis /usr/X11R6/man
'' と実行して
おきます。
コンパイル中に ``Virtual memory exhausted'' というメッセージが
cc から出力されるのを避けるには、データやスタックのサイズ制限を
増やしておくといいでしょう(csh の場合 ``limit datasize 32M
''
と ``limit stacksize 16M
'' を実行しておきます)。
メモ: NetBSD 0.9A と XFree86 2.1 からは、__386BSD__ という シンボルをコンパイラも X の *BSD 用の設定ファイルも設定しなくなって います。クライアントを各種 BSD 系のシステムへ移植する時は、BSD というシンボルを本来 BSD 特有なコードに使うようにする必要があります。 シンボルの値を使って BSD のリリースを区別することもできます。例えば、 Net-2 以降のリリースに特有のコードの場合には以下のようにします:
#if (BSD >= 199103)
このシンボルを正しく設定する為に、<sys/param.h>
を
ソース中でインクルードするようにしてください。XFree86 3.1.1 以降では、
CSRG_BASED というシンボルが各種 BSD システムのために定義されてい
ます。これは <sys/param.h>
のインクルードの保護のために
使われます。
本当に i386 系の各種 BSD に特有な部分に関するコードには、 FreeBSD には __FreeBSD__ を、NetBSD には __NetBSD__ を、 OpenBSD には __OpenBSD__ を、386BSD には __386BSD__ を、 BSD/386 には __bsdi__ を使用してください。
メモ(その2): 実行時に次のようなメッセージが出たら
ld.so: undefined symbol _XtCvtStringToFont
NetBSD のダイナミックリンク機構の弱点でつまづいています。libXmu を
使用するアプリケーションは、libXt も使用します。クライアントがごく
普通の Imakefile
を使用するなら、この依存性は自動的に Makefile
中に含まれます。したがって問題が現れることはないでしょう。もしそうでな
い場合は単に、``-lXt
'' を Imakefile や Makefile のライブラリリス
トに追加して、再リンクを行ってください。