在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux下C編程基礎(chǔ)之:使用autotools

            Linux下C編程基礎(chǔ)之:使用autotools

            作者: 時(shí)間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/257148.htm

            3.6使用

            在上一小節(jié),讀者已經(jīng)了解到了make項(xiàng)目管理器的強(qiáng)大功能。的確,makefile可以幫助make完成它的使命,但要承認(rèn)的是,編寫makefile確實(shí)不是一件輕松的事,尤其對(duì)于一個(gè)較大的項(xiàng)目而言更是如此。那么,有沒有一種輕松的手段生成makefile而同時(shí)又能讓用戶享受make的優(yōu)越性呢?本節(jié)要講的系列工具正是為此而設(shè)的,它只需用戶輸入簡(jiǎn)單的目標(biāo)文件、依賴文件、文件目錄等就可以輕松地生成makefile了,這無疑是廣大用戶所希望的。另外,這些工具還可以完成系統(tǒng)配置信息的收集,從而可以方便地處理各種移植性的問題。也正是基于此,現(xiàn)在上的軟件開發(fā)一般都用來制作makefile,讀者在后面的講述中就會(huì)了解到。

            3.6.1autotools使用流程

            正如前面所言,autotools是系列工具,讀者首先要確認(rèn)系統(tǒng)是否裝了以下工具(可以用which命令進(jìn)行查看)。

            n aclocal

            n autoscan

            n

            n autoheader

            n automake

            使用autotools主要就是利用各個(gè)工具的腳本文件以生成最后的makefile。其總體流程是這樣的。

            n 使用aclocal生成一個(gè)“aclocal.m4”文件,該文件主要處理本地的宏定義;

            n 改寫“configure.scan”文件,并將其重命名為“configure.in”,并使用文件生成configure文件。

            接下來,筆者將通過一個(gè)簡(jiǎn)單的hello.c例子帶領(lǐng)讀者熟悉autotools生成makefile的過程,由于在這過程中會(huì)涉及較多的腳本文件,為了更清楚地了解相互之間的關(guān)系,強(qiáng)烈建議讀者實(shí)際動(dòng)手操作以體會(huì)其整個(gè)過程。

            1.a(chǎn)utoscan

            它會(huì)在給定目錄及其子目錄樹中檢查源文件,若沒有給出目錄,就在當(dāng)前目錄及其子目錄樹中進(jìn)行檢查。它會(huì)搜索源文件以尋找一般的移植性問題并創(chuàng)建一個(gè)文件“configure.scan”,該文件就是接下來要用到的“configure.in”原型。如下所示:

            [root@localhostautomake]#autoscan

            autom4te:configure.ac:nosuchfileordirectory

            autoscan:/usr/bin/autom4tefailedwithexitstatus:1

            [root@localhostautomake]#ls

            autoscan.logconfigure.scanhello.c

            由上述代碼可知autoscan首先會(huì)嘗試去讀入“configure.ac”(同configure.in的配置文件)文件,此時(shí)還沒有創(chuàng)建該配置文件,于是它會(huì)自動(dòng)生成一個(gè)“configure.in”的原型文件“configure.scan”。

            2.a(chǎn)utoconf

            configure.in是autoconf的腳本配置文件,它的原型文件“configure.scan”如下所示:

            #-*-Autoconf-*-

            #Processthisfilewithautoconftoproduceaconfigurescript.

            AC_PREREQ(2.59)

            #Thenextoneismodifiedbydavid

            #AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)

            AC_INIT(hello,1.0)

            #Thenextoneisaddedbydavid

            AM_INIT_AUTOMAKE(hello,1.0)

            AC_CONFIG_SRCDIR([hello.c])

            AC_CONFIG_HEADER([config.h])

            #Checksforprograms.

            AC_PROG_CC

            #Checksforlibraries.

            #Checksforheaderfiles.

            #Checksfortypedefs,structures,andcompilercharacteristics.

            #Checksforlibraryfunctions.

            AC_CONFIG_FILES([makefile])

            AC_OUTPUT

            下面對(duì)這個(gè)腳本文件進(jìn)行解釋。

            n 以“#”號(hào)開始的行是注釋。

            n AC_PREREQ宏聲明本文件要求的autoconf版本,如本例使用的版本2.59。

            n AC_INIT宏用來定義軟件的名稱和版本等信息,在本例中省略了BUG-REPORT-ADDRESS,一般為作者的E-mail。

            n AM_INIT_AUTOMAKE是筆者另加的,它是automake所必備的宏,使automake自動(dòng)生成makefile.in,也同前面一樣,PACKAGE是所要產(chǎn)生軟件套件的名稱,VERSION是版本編號(hào)。

            n AC_CONFIG_SRCDIR宏用來檢查所指定的源碼文件是否存在,以及確定源碼目錄的有效性。在此處源碼文件為當(dāng)前目錄下的hello.c。

            n AC_CONFIG_HEADER宏用于生成config.h文件,以便autoheader使用。

            n AC_CONFIG_FILES宏用于生成相應(yīng)的makefile文件。

            n 中間的注釋之間可以分別添加用戶測(cè)試程序、測(cè)試函數(shù)庫(kù)、測(cè)試頭文件等宏定義。

            接下來首先運(yùn)行aclocal,生成一個(gè)“aclocal.m4”文件,該文件主要處理本地的宏定義。如下所示:

            [root@localhostautomake]#aclocal

            再接著運(yùn)行autoconf,生成“configure”可執(zhí)行文件。如下所示:

            [root@localhostautomake]#autoconf

            [root@localhostautomake]#ls

            aclocal.m4autom4te.cacheautoscan.logconfigureconfigure.inhello.c

            3.a(chǎn)utoheader

            接著使用autoheader命令,它負(fù)責(zé)生成config.h.in文件。該工具通常會(huì)從“acconfig.h”文件中復(fù)制用戶附加的符號(hào)定義,因?yàn)檫@里沒有附加符號(hào)定義,所以不需要?jiǎng)?chuàng)建“acconfig.h”文件。如下所示:

            [root@localhostautomake]#autoheader

            4.a(chǎn)utomake

            這一步是創(chuàng)建makefile很重要的一步,automake要用的腳本配置文件是makefile.am,用戶需要自己創(chuàng)建相應(yīng)的文件。之后,automake工具轉(zhuǎn)換成makefile.in。在該例中,筆者創(chuàng)建的文件為makefile.am,如下所示:

            AUTOMAKE_OPTIONS=foreign

            bin_PROGRAMS=hello

            hello_SOURCES=hello.c

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉