Next Previous Contents

7. 第二个例子: Xloadimage

这个例子提出较简单的问题. xloadimage 程式加入到我的图形工作组似乎是很有用. 我从一本由 Mui 和 Quercia 所著的好书 X User Tools 所附的 CD 上的原始码目录(source directory), 直接复制 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 原始码的某处已经重复定义了在标准 include 档案 stdlib.h 已定义的东西. 首先试试将在 image.h 的23行标注(commenting out)起来, 也许 stdlib.h include 是不大需要的.

此时, build 过程没有任何重大错误. xloadimage 程式现在功能都正常.


Next Previous Contents