日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux下Makefile的automake生成全攻略( 三 )


then mv -f ".deps/helloworld.Tpo" ".deps/helloworld.Po";
else rm -f ".deps/helloworld.Tpo"; exit 1;
fi
gcc -g -O2 -o helloworld helloworld.o;

運(yùn)行helloworld
$ ./helloworld
Hello, Linux World!

這樣helloworld就編譯出來了,你如果按上面的步驟來做的話,應(yīng)該也會(huì)很容易地編譯出正確的helloworld文件 。你還可以試著使用一些其他的make命令,如make clean,make install,make dist,看看它們會(huì)給你什么樣的效果 。感覺如何?自己也能寫出這么專業(yè)的Makefile,老板一定會(huì)對(duì)你刮目相看 。
四、深入淺出
針對(duì)上面提到的各個(gè)命令,我們?cè)僮鲂┰敿?xì)的介紹 。
1、 autoscan
autoscan是用來掃描源代碼目錄生成configure.scan文件的 。autoscan可以用目錄名做為參數(shù),但如果你不使用參數(shù)的話,那么autoscan將認(rèn)為使用的是當(dāng)前目錄 。autoscan將掃描你所指定目錄中的源文件,并創(chuàng)建configure.scan文件 。
2、 configure.scan
configure.scan包含了系統(tǒng)配置的基本選項(xiàng),里面都是一些宏定義 。我們需要將它改名為configure.in
3、 aclocal
aclocal是一個(gè)perl 腳本程序 。aclocal根據(jù)configure.in文件的內(nèi)容,自動(dòng)生成aclocal.m4文件 。aclocal的定義是:“aclocal - create aclocal.m4 by scanning configure.ac” 。
4、 autoconf
autoconf是用來產(chǎn)生configure文件的 。configure是一個(gè)腳本,它能設(shè)置源程序來適應(yīng)各種不同的操作系統(tǒng)平臺(tái),并且根據(jù)不同的系統(tǒng)來產(chǎn)生合適的Makefile,從而可以使你的源代碼能在不同的操作系統(tǒng)平臺(tái)上被編譯出來 。
configure.in文件的內(nèi)容是一些宏,這些宏經(jīng)過autoconf 處理后會(huì)變成檢查系統(tǒng)特性、環(huán)境變量、軟件必須的參數(shù)的shell腳本 。configure.in文件中的宏的順序并沒有規(guī)定,但是你必須在所有宏的最前面和最后面分別加上AC_INIT宏和AC_OUTPUT宏 。
在configure.ini中:
#號(hào)表示注釋,這個(gè)宏后面的內(nèi)容將被忽略 。
AC_INIT(FILE)
這個(gè)宏用來檢查源代碼所在的路徑 。
AM_INIT_AUTOMAKE(PACKAGE, VERSION);
這個(gè)宏是必須的,它描述了我們將要生成的軟件包的名字及其版本號(hào):PACKAGE是軟件包的名字,VERSION是版本號(hào) 。當(dāng)你使用make dist命令時(shí),它會(huì)給你生成一個(gè)類似helloworld-1.0.tar.gz的軟件發(fā)行包,其中就有對(duì)應(yīng)的軟件包的名字和版本號(hào) 。
AC_PROG_CC
這個(gè)宏將檢查系統(tǒng)所用的C編譯器 。
AC_OUTPUT(FILE)
這個(gè)宏是我們要輸出的Makefile的名字 。
我們?cè)谑褂胊utomake時(shí),實(shí)際上還需要用到其他的一些宏,但我們可以用aclocal 來幫我們自動(dòng)產(chǎn)生 。執(zhí)行aclocal后我們會(huì)得到aclocal.m4文件 。
產(chǎn)生了configure.in和aclocal.m4 兩個(gè)宏文件后,我們就可以使用autoconf來產(chǎn)生configure文件了 。
5、 Makefile.am
Makefile.am是用來生成Makefile.in的,需要你手工書寫 。Makefile.am中定義了一些內(nèi)容:
AUTOMAKE_OPTIONS
這個(gè)是automake的選項(xiàng) 。在執(zhí)行automake時(shí),它會(huì)檢查目錄下是否存在標(biāo)準(zhǔn)GNU軟件包中應(yīng)具備的各種文件,例如AUTHORS、ChangeLog、NEWS等文件 。我們將其設(shè)置成foreign時(shí),automake會(huì)改用一般軟件包的標(biāo)準(zhǔn)來檢查 。
bin_PROGRAMS
這個(gè)是指定我們所要產(chǎn)生的可執(zhí)行文件的文件名 。如果你要產(chǎn)生多個(gè)可執(zhí)行文件,那么在各個(gè)名字間用空格隔開 。
helloworld_SOURCES
這個(gè)是指定產(chǎn)生“helloworld”時(shí)所需要的源代碼 。如果它用到了多個(gè)源文件,那么請(qǐng)使用空格符號(hào)將它們隔開 。比如需要helloworld.h,helloworld.c那么請(qǐng)寫成helloworld_SOURCES= helloworld.h helloworld.c 。
如果你在bin_PROGRAMS定義了多個(gè)可執(zhí)行文件,則對(duì)應(yīng)每個(gè)可執(zhí)行文件都要定義相對(duì)的filename_SOURCES 。
6、 automake
我們使用automake --add-missing來產(chǎn)生Makefile.in 。

推薦閱讀