這份文件是Linux HOWTO系列之一.易言之,你可以在所有存放Linux HOWTO文件的網站上面找到它的芳蹤,例 如http://sunsite.unc.edu/pub/linux/docs/HOWTO/.HTML格式的版本(可能會是較新的版本)可以從http://ftp.linux.org.uk/~barlow/howto/gcc-howto.html上面抓下來.
gcc正式的說明文件是附在發行的原始碼(source distribution)內(往下看就有了!),裡頭有textinfo與.info
兩種檔案.要是你的網路連接速率夠快,或者是有一片cdrom;不然的話,有高度的耐心也成,你可以自己把它untar,然後再把相對應的位元一一拷貝到/usr/info
的目錄底下.假如你的條件與上述的不符,不妨到 tsx-11站上去找一找.不過,我想,沒有必要老是惦記著最新的版本吧.
libc的文件說明有兩種來源.一種是GNU libc,以.info的格式儲存,除了stdio之外,其餘Linux libc的說明都相當詳盡精確.另一種可以在Linux的archivemanpages 上找到系統呼叫(system call)(第2節)與libc函數(function)(第3節)的文件說明.
解答有二:
(a)你可以在ftp://tsx-11.mit.edu:/pub/linux/packages/GCC/的網站上找到
正式的Linux GCC發行系統(distribution),且已編譯好的(read-compiled)可執行檔(in binary).當我在寫這份文件時,2.7.2(gcc-2.7.2.bin.tar.gz
)是最新的版本.
(b)自由軟體基金會(Free Software Foundation)所發佈的GCC最新原始碼可以從網站GNU archives上取得.沒有必要非得與上述的版本一致才行,不過這個版本的確是目前最新的.Linux GCC的維護人士(maintainers)讓你可以很輕鬆的自行編譯這個最新的版本.configure
命令稿(script)會幫你自動建好(set it all up)所有該做的事.建議你有空不妨到tsx-11看看,說不定會有修正的版本(patches)是你會想要用的(apply).
如果想要編譯出一些有用的東東(non-trivial)(不是我囉唆,還是有不少細瑣的東東在哩!),下面一小節所談的也是你要具備的:
在這兒你該選的是取決於(i)你的系統是ELF亦或是a.out的;(ii)你希望你的系 統變成哪一種?如果你是從libc 4昇級到libc 5,那麼給你一個良心的建議,去看看ELF-HOWTO文件.你一定會問,在ELF文件的哪兒呢?嘿!嘿!不偏不倚,就差不多跟這份文件一樣的位置.你可以在網站tsx-11上面找到你想要的.
libc-5.2.18.bin.tar.gz
--- ELF共享程式庫(ELF shared library images),靜態程式庫(static libraries)與標頭檔(include files)(針對C語言與數學程式庫的).
libc-5.2.18.tar.gz
---libc-5.2.18.bin.tar.gz的原始碼.這兩個檔案你都需要,.bin.
套件(package)內含有標頭檔(header files).如果此時你正猶豫不決,不曉得是要老身親自下海,動手編譯C程式庫;還是直接用編譯好的二進位檔(binaries)就可以了.有這種困擾的人,來,看我的嘴形:用人家編譯好的二進位檔不就解決了嘛.只有在你想要NYS或是shadow password的情況下,你才需要自己的手來推動搖籃.
libc-4.7.5.bin.tar.gz
--- 這個檔案的內容是a.out的共享程式庫(shared library images)與靜態程式庫.這個檔案的用途是為了與前述的libc 5套件共存共榮(coexist)而設計的,不過除非你想要繼續使用或者發展a.out格式的程式,不然的話,是不需要它的.
到目前為止,與之前所談的都一樣,從網站tsx-11上,就可以找到這些工具程式.目前的版本是binutils-2.6.0.2.bin.tar.gz
.
需注意的是binutils只適用於ELF格式,目前libc的版本也都是ELF的;當然啦, 習慣a.out的人如果有個ELF的libc與a.out的libc聯合(in conjunction with)起來一起使用, 那對他們來講是再好不過的美事了.不可否認的,C程式庫的發展正以堅決的(emphatically)腳步邁向ELF格式,除非你真的有很好的理由,需要a.out的東東(things),不然啊,大家都會鼓勵(encourage)你勇於突破,趁早加入銳不可擋的大潮流裡.
11/9/97譯