次のページ 前のページ 目次へ

9. あたらしい X クライアントの構築

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


次のページ 前のページ 目次へ