この例は簡単な問題で困らせてくれます。 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 プログラムは現在、ちゃんと動作しています。