資源描述:
《linux下軟件發(fā)布技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Linux下軟件發(fā)布技巧作者:楊鵬發(fā)文時間:2003.04.21 Linux現(xiàn)在能夠被越來越多的人認識及使用,在很大程度上可以歸結(jié)為其具有強大的C編譯器——gcc、便于交流的環(huán)境——Internet,以及雄厚的師資——有數(shù)不清的程序員在開發(fā)數(shù)不清的代碼。 有了Linux和Internet,我們可以很容易地在世界范圍內(nèi)發(fā)布軟件作品,與他人交流開發(fā)心得與技巧。當(dāng)我們完成了自己的軟件作品,怎么樣才能讓其他人以快捷、方便的方式與自己分享成果、理解開發(fā)思想呢?這就是我們要討論的Linux下軟件打包和發(fā)布的方法。 在Linux尚未流行之前,Linux下軟件打包和發(fā)布應(yīng)用僅
2、僅停留在程序員中,因此軟件分發(fā)基本都使用源代碼方式,便于大家相互學(xué)習(xí)和交流。隨著大量普通用戶和商業(yè)應(yīng)用的參與,源代碼方式就顯得過于繁瑣,對用戶要求太高,而且耗費時間,所以編譯好的二進制文件發(fā)布方式開始流行起來。這就是Linux下兩種主要的軟件發(fā)布方式:源代碼方式和二進制方式。源代碼方式通常是將源文件以tar、tgz格式打包,解包后進行配置、編譯和安裝;二進制方式以RedHat公司的RPM(RedHatPackageManager)格式最廣泛,它可以完成所有的步驟,自動將軟件安裝到系統(tǒng)中?! gz源代碼方式 使用這種源代碼方式發(fā)布的軟件,一般需要進行下列步驟:
3、1.解開壓縮文件,如tar、gz、bz2或tgz。 2.執(zhí)行./configure[--options]進行軟件的配置?! ?.執(zhí)行make、makeinstall等命令編譯代碼,并安裝到系統(tǒng)中。 因此,如果要發(fā)布軟件,就需要生成可供配置的configure文件和進行編譯安裝的Makefile。下面以一個簡單的例子來說明。假設(shè)要發(fā)布一個標(biāo)準(zhǔn)的hello程序,它打出“Hello,world!”的文字,該源程序命名為hello.c。在這個目錄下(注意只有源文件hello.c,不需要編譯hello.o或者hello),首先執(zhí)行命令autoscan:$autoscan
4、 這樣會生成configure.scan文件,它包含了系統(tǒng)配置的基本選項。作為一個簡單的例子,其中很多東西是不需要的,所以可以修改這個文件,讓它僅僅包含下面幾行:AC_INIT(hello.c)AM_INIT_AUTOMAKE(hello,0.1)AC_PROG_CCAC_OUTPUT(Makefile) 然后把這個文件復(fù)制為configure.in,作為配置的輸入文件?! ∮捎谑褂昧薽4宏(AM_INIT...語句),必須運行aclocal命令生成相應(yīng)的宏文件:$aclocal 在當(dāng)前目錄中會產(chǎn)生aclocal.m4文件。 然后執(zhí)行autoconf,以生成c
5、onfigure執(zhí)行腳本:$autoconf 這樣關(guān)于配置的部分就完成了,下面是和編譯生成有關(guān)的。 我們需要手工編輯一個文本文件——Makefile.am,內(nèi)容如下:AUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c 這個文件應(yīng)該很好理解,foreign告訴系統(tǒng)這是一個普通的應(yīng)用軟件,該程序名稱為hello,而hello程序包含的源程序(SOURCES)只有hello.c這個文件。接著執(zhí)行:$automake--add-missing automake會自動生成所有必須的文件,包括M
6、akefile.in等重要文件。 最后進行壓縮、打包,整個工作就完成了?! ~@得這個壓縮包的用戶只需要進行前面提到的三個安裝步驟,就可以順利地得到hello應(yīng)用程序了?! PM二進制方式 正如前面介紹的,使用源代碼方式發(fā)布軟件無論是對作者還是用戶都比較麻煩。于是,RedHat公司開發(fā)出一種直接安裝編譯好的二進制文件方式,并可根據(jù)不同的平臺發(fā)布不同的版本。用戶只需要一個命令,就可以完成所有要安裝的步驟,十分適合普通用戶使用。那么,如何把自己的軟件制作成RPM包呢? 下面以RedHatLinux為例,在默認情況下,和RPM包相關(guān)的目錄是/usr/src/redh
7、at/下的SOURCES、SPECS和RPMS。其中SOURCES目錄存放需要制作的源代碼文件,一般是tgz格式壓縮;SPECS目錄存放編寫的spec文件,這些文件指示RPM制作工具如何進行打包工作;而RPMS下有i386、i586、noarch等子目錄,分別對應(yīng)不同的體系結(jié)構(gòu),如Intel80386、586處理器等,noarch則是通用的,制作完成的RPM包就存放在這些目錄中?! ∪匀灰郧懊娴膆ello為例,直接將hello.c壓縮成hello.tgz格式:$tarcfvzhello.tgzhello.c 然后把hello.tgz拷貝到/usr/src/re