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

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 のライブラリリス トに追加して、再リンクを行ってください。


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