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

10. 2 番目の例: Xloadimage

この例の問題は割と簡単です。xloadimage は私のグラフィック ツール集に加えると便利なプログラムのようです。私は Mui と Quercia が書いた素晴らしい本である <@@ref>refsX User Tools の付属 CD-ROM のソースディレクトリ から xloadi41.gz を コピーしました。もちろん tar xzvf でファイルを展開しました。しかし、make する とタチの悪そうなエラーが出て終了してしまいます。

gcc -c -O -fstrength-reduce -finline-functions -fforce-mem
-fforce-addr -DSYSV  -I/usr/X11R6/include
-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\" mcidas.c

In file included from /usr/include/stdlib.h:32,
                 from image.h:23,
                 from xloadimage.h:15,
                 from mcidas.c:7:
/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:
conflicting types for `wchar_t'
/usr/X11R6/include/X11/Xlib.h:74: previous declaration of
`wchar_t'
make[1]: *** [mcidas.o] Error 1
make[1]: Leaving directory
`/home/thegrendel/tst/xloadimage.4.1'
make: *** [default] Error 2

このエラーメッセージには重要な手がかりが含まれています。

image.h の 23 行目を見ると…。

       #include <stdlib.h>

なるほど、xloadimage のソースファイルのどこかで、 wchar_t が標準のインクルードファイルである stdlib.h の定義から再定義されていました。 まずは image.h の 23 行目をコメントアウトしてみましょう。 同様に、たぶん stdlib.h もインクルードする必要はないだろうと 見当をつけ、実際そのとおりでした。

この時点で、致命的なエラーも起こらずに構築できました。そして今でも、 xloadimage プログラムはちゃんと動いています。


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