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

10. 第2の例:Xloadimage

この例は簡単な問題で困らせてくれます。 xloadimage は私のグラフィック ツール集に加えて役に立つプログラムのようです。私は xloadi41.gz を Mui と Quercia の素晴らしい "X User Tools" という本に ついていた CD-ROM のソースディレクトリからコピーしました。当然、 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 のソースファイルのどこかで、標準のインクルード ファイルである stdlib.h で定義された wchar_t が再定義されていました。 最初に image.h の23行目をコメントアウトしてみましょう、すると、やはり stdlib.h は結局インクルードする必要が無いようです。

この点で、致命的なエラーがでること無く、構築は進みました。そして、 xloadimage プログラムは現在、ちゃんと動作しています。


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