<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Linux下C編程基礎之:使用autotools

Linux下C編程基礎之:使用autotools

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

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

3.6使用

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

3.6.1autotools使用流程

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

n aclocal

n autoscan

n

n autoheader

n automake

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

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

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

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

1.a(chǎn)utoscan

它會(huì )在給定目錄及其子目錄樹(shù)中檢查源文件,若沒(méi)有給出目錄,就在當前目錄及其子目錄樹(shù)中進(jìn)行檢查。它會(huì )搜索源文件以尋找一般的移植性問(wèn)題并創(chuàng )建一個(gè)文件“configure.scan”,該文件就是接下來(lái)要用到的“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í)還沒(méi)有創(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

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

n 以“#”號開(kāi)始的行是注釋。

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

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

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

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

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

n AC_CONFIG_FILES宏用于生成相應的makefile文件。

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

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

[root@localhostautomake]#aclocal

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

[root@localhostautomake]#autoconf

[root@localhostautomake]#ls

aclocal.m4autom4te.cacheautoscan.logconfigureconfigure.inhello.c

3.a(chǎn)utoheader

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

[root@localhostautomake]#autoheader

4.a(chǎn)utomake

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

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=hello

hello_SOURCES=hello.c

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>