L'Xscrabble
di Matt Chapman aveva l'aria di essere un programma
che sarebbe stato interessante avere, poiché si dà il caso che
io sia un accanito giocatore di ScrabbleTM
. Lo scaricai, decompressi,
e lo compilai seguendo la procedura nel file README:
xmkmf
make Makefiles
make includes
make
Ovviamente non funzionò...
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...
Indagai su ciò nel newsgroup comp.os.linux.x, e qualcuno gentilmente mi indicò che, apparentemente, le librerie Xt, Xaw, Xmu, e X11 non erano state trovate nella fase di link. Hmmm...
C'erano due Makefile principali, e quello nella directory src
catturò la mia attenzione. Una linea nel Makefile definita LOCAL_LIBS:
LOCAL_LIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB). Qui c'erano i
riferimenti alle librerie non trovate dal linker.
Cercando il successivo riferimento a LOCAL_LIBS, vidi alla linea 495 di quel Makefile:
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS)
$(EXTRA_LOAD_FLAGS)
Ora, cos'erano queste LDLIBS?
LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES)
$(EXTRA_LIBRARIES)
Le SYS_LIBRARIES erano:
SYS_LIBRARIES = -lXpm -L../Xc -lXc
Sì! Le librerie mancanti erano qui.
È possibile che il linker avesse bisogno di vedere le LDLIBS prima delle LOCAL_LIBS... Così, la prima cosa da provare era di modificare il Makefile invertendo le $(LOCAL_LIBS) e le $(LDLIBS) alla linea 495, dunque ora si dovrebbe leggere:
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS)
$(EXTRA_LOAD_FLAGS) ^^^^^^^^^^^^^^^^^^^^^^^
Provai ad eseguire di nuovo make con i suddetti cambiamenti e, guarda un po', stavolta funzionò. Xscrabble aveva ancora bisogno di qualche aggiustamento ed una messa a punto, ovviamente, come cambiare nome al dizionario e togliere il commento da qualche statement assert in uno dei file sorgenti, ma da allora mi ha fornito svariate ore di divertimento.
[Notate che ora è disponibile una nuova versione di Xscrabble in formato rpm, e questa si installa senza problemi.]
Potete contattare Matt Chapman via e-mail, e scaricare Xscrabble dalla sua home page.
Scrabble è un marchio registrato dalla Milton Bradley Co., Inc.