新しいクライアント(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 のライブラリリストに追加して、再リンクすれ
ば対応できます。