Linux下C編程基礎(chǔ)之:使用autotools
3.6.2使用autotools所生成的makefile
autotools生成的makefile除具有普通的編譯功能外,還具有以下主要功能(感興趣的讀者可以查看這個簡單的hello.c程序的makefile)。
1.make
鍵入make默認(rèn)執(zhí)行“makeall”命令,即目標(biāo)體為all,其執(zhí)行情況如下所示:
[root@localhostautomake]#make
ifgcc-DPACKAGE_NAME=\-DPACKAGE_TARNAME=\-DPACKAGE_VERSION=\-DPACKAGE_STRING=\-DPACKAGE_BUGREPORT=\-DPACKAGE=hello-DVERSION=1.0-I.-I.-g-O2-MThello.o-MD-MP-MF.deps/hello.Tpo-c-ohello.ohello.c;
thenmv-f.deps/hello.Tpo.deps/hello.Po;elserm-f.deps/hello.Tpo;exit1;fi
gcc-g-O2-ohellohello.o
此時(shí)在本目錄下就生成了可執(zhí)行文件“hello”,運(yùn)行“./hello”能出現(xiàn)正常結(jié)果,如下所示:
[root@localhostautomake]#./hello
Hello!Autoconf!
2.makeinstall
此時(shí),會把該程序安裝到系統(tǒng)目錄中去,如下所示:
[root@localhostautomake]#makeinstall
ifgcc-DPACKAGE_NAME=\-DPACKAGE_TARNAME=\-DPACKAGE_VERSION=\-DPACKAGE_STRING=\-DPACKAGE_BUGREPORT=\-DPACKAGE=hello-DVERSION=1.0-I.-I.-g-O2-MThello.o-MD-MP-MF.deps/hello.Tpo-c-ohello.ohello.c;
thenmv-f.deps/hello.Tpo.deps/hello.Po;elserm-f.deps/hello.Tpo;exit1;fi
gcc-g-O2-ohellohello.o
make[1]:Enteringdirectory'/root/workplace/automake'
test-z/usr/local/bin||mkdir-p--/usr/local/bin
/usr/bin/install-c'hello'/usr/local/bin/hello
make[1]:Nothingtobedonefor'install-data-am'.
make[1]:Leavingdirectory'/root/workplace/automake'
此時(shí),若直接運(yùn)行hello,也能出現(xiàn)正確結(jié)果,如下所示:
[root@localhostautomake]#hello
Hello!Autoconf!
3.makeclean
此時(shí),make會清除之前所編譯的可執(zhí)行文件及目標(biāo)文件(objectfile,*.o),如下所示:
[root@localhostautomake]#makeclean
test-zhello||rm-fhello
rm-f*.o
4.makedist
此時(shí),make將程序和相關(guān)的文檔打包為一個壓縮文檔以供發(fā)布,如下所示:
[root@localhostautomake]#makedist
[root@localhostautomake]#lshello-1.0-tar.gz
hello-1.0-tar.gz
可見該命令生成了一個hello-1.0-tar.gz壓縮文件。
由上面的講述讀者不難看出,autotools是軟件維護(hù)與發(fā)布的必備工具,鑒于此,如今GUN的軟件一般都是由automake來制作的。
想一想 | 對于automake制作的這類軟件,應(yīng)如何安裝呢? |
評論