?? software-building-6.html
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
<TITLE>在 Linux 下建立軟體套件: 第一個(gè)例子: Xscrabble</TITLE>
<LINK HREF="Software-Building-7.html" REL=next>
<LINK HREF="Software-Building-5.html" REL=previous>
<LINK HREF="Software-Building.html#toc6" REL=contents>
</HEAD>
<BODY>
<A HREF="Software-Building-7.html">Next</A>
<A HREF="Software-Building-5.html">Previous</A>
<A HREF="Software-Building.html#toc6">Contents</A>
<HR>
<H2><A NAME="s6">6. 第一個(gè)例子: Xscrabble</A></H2>
<P>Matt Chapman的 <B>Xscrabble</B> 似乎像是個(gè)頗有趣的程式,
因?yàn)槲以莻€(gè)貪婪的 Scrabble<CODE>™</CODE>(拼字游戲)玩家.我下載下,解壓,
而且建立它以 README 檔案中的下列步驟:
<BLOCKQUOTE><CODE>
<PRE>
xmkmf
make Makefiles
make includes
make
</PRE>
</CODE></BLOCKQUOTE>
<P><EM>當(dāng)然它不能正常運(yùn)作...</EM>
<P>
<HR>
<PRE>
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...
</PRE>
<HR>
<P>我在
<A HREF="news://comp.os.linux.x">comp.os.linux.x</A>
的新聞群組詢問(wèn)過(guò), 而且有些人好心的指出似乎 Xt, Xaw, Xmu, 和 X11 libs
沒(méi)有讓連結(jié)器(linker)找得到. 嗯...
<P>有兩個(gè)主要的 Makefiles, 而且在 <CODE>src</CODE> 目錄下的那個(gè)讓我感興趣.
在 Makefile 一行有定義 LOCAL_LIBS 成:
LOCAL_LIBS = $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB) 這所指的 libs
并沒(méi)有被連結(jié)器找到.
<P>找找下個(gè)指到 LOCAL_LIBS 的地方, 我看到該在 Makerfile 的495行:
<BLOCKQUOTE><CODE>
<PRE>
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBS) $(LDLIBS)
$(EXTRA_LOAD_FLAGS)
</PRE>
</CODE></BLOCKQUOTE>
<P>而現(xiàn)在 LDLIBS 是什麼呢?
<BLOCKQUOTE><CODE>
<PRE>
LDLIBS = $(LDPOSTLIB) $(THREADS_LIBS) $(SYS_LIBRARIES)
$(EXTRA_LIBRARIES)
</PRE>
</CODE></BLOCKQUOTE>
<P>SYS_LIBRARIES 是:
<BLOCKQUOTE><CODE>
<PRE>
SYS_LIBRARIES = -lXpm -L../Xc -lXc
</PRE>
</CODE></BLOCKQUOTE>
是個(gè)! 就是這樣遺失 libraries.
<P>大概連結(jié)器需要在 LOCAL_LIBS 之前看到 LDLIBS...
所以, 第一件事要嘗試去修改 Makefile 就是改寫(xiě)在495行的
$(LOCAL_LIBS) 和 $(LDLIBS) , 所以它現(xiàn)在變成:
<BLOCKQUOTE><CODE>
<PRE>
$(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LDLIBS) $(LOCAL_LIBS)
$(EXTRA_LOAD_FLAGS) ^^^^^^^^^^^^^^^^^^^^^^^
</PRE>
</CODE></BLOCKQUOTE>
<P>在上面的改後,我試著再次執(zhí)行 <B>make</B> , 瞧, 它這次可正常跑了.
當(dāng)然, Xscrabble 仍然需要一些微調(diào)(fine tuning]與玩弄(twiddling),
像是重新命名字典以及標(biāo)注某些輔助的敘述在原始碼檔案之一,
但正因?yàn)槟菢?它已給我好幾個(gè)小時(shí)的消遣.
<P>你可以寄 e-mail
<A HREF="mailto:matt@belgarath.demon.co.uk">Matt Chapman</A>, 而且從他的
<A HREF="http://www.belgarath.demon.co.uk/programs/index.html">home page</A>
下載 <B>Xscrabble</B>.
<P>
<P>
<P>
<P>
<HR>
<PRE>
Scrabble 是 Milton Bradley Co., Inc. 的注冊(cè)商標(biāo).
</PRE>
<HR>
<P>
<P>
<P>
<P>
<HR>
<A HREF="Software-Building-7.html">Next</A>
<A HREF="Software-Building-5.html">Previous</A>
<A HREF="Software-Building.html#toc6">Contents</A>
</BODY>
</HTML>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -