Matt Chapman 的 Xscrabble
似乎是有趣的一个程序。因为我正好希望做 ScrabbleTM
的玩家。我下载了它,并根据 README 文件用以下步骤构建它:
xmkmf
make Makefiles
make includes
make
当然它不能工作...
gcc -o xscrab -O2 -O -L/usr/X11R6/lib
init.o xinit.o misc.o moves.o cmove.o main.o xutils.o mess.o popup.o
widgets.o display.o user.o CircPerc.o
-lXaw -lXmu -lXExExt -lXext -lX11 -lXt -lSM -lICE -lXExExt -lXext -lX11
-lXpm -L../Xc -lXc
BarGraf.o(.text+0xe7): undefined reference to `XtAddConverter'
BarGraf.o(.text+0x29a): undefined reference to `XSetClipMask'
BarGraf.o(.text+0x2ff): undefined reference to `XSetClipRectangles'
BarGraf.o(.text+0x375): undefined reference to `XDrawString'
BarGraf.o(.text+0x3e7): undefined reference to `XDrawLine'
etc.
etc.
etc...
我在有关这个的 comp.os.linux.x 新闻组上询问,有人善意并直接的提出显然是 Xt, Xaw, Xmu, 和 X11 libs 函数库在链接的位置没有找到。
那里有两个主要的 Makefiles ,一个在 src 目录引起了我的注意,在 Makefile 里的一行定义的 LOCAL_LIBS 是 LOCAL_LIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) ,在这里提到的函数库不能被链接到。
查看下一个涉及到的 LOCAL_LIBS,我看了Makefile 的第 495 行:
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS)
$(EXTRA_LOAD_FLAGS)
现在这些 LDLIBS 是什么?
LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES)
$(EXTRA_LIBRARIES)
SYS_LIBRARIES 是:
SYS_LIBRARIES = -lXpm -L../Xc -lXc
对!这里是缺少的函数库。
或者这个链接需要在 在看
LDLIBS 之前的 LOCAL_LIBS……那么,首先认为尝试在 Makefile 修改 $(LOCAL_LIBS)
和 $(LDLIBS) ,替换第 495 行,因此现在应该阅读:
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS)
$(EXTRA_LOAD_FLAGS) ^^^^^^^^^^^^^^^^^^^^^^^
我经过上述的修改试验后再次运行 make ,看!它已经工作了。当然, Xscrabble 仍然需要更好的调试,比如在源码文件里重命名关键字和注释一些声明。从那以后它给了我很多愉快的时光。
[提示有最近的 Xscrabble 版本现在有了可用的 rpm 格式,而且安装没有任何问题。]
你可以用 e-mail 发给 Matt Chapman,
,而且它的 主页.
可提供 Xscrabble 的下载。
Scrabble 是 Milton Bradley 有限公司的注册商标。