autotools工具介紹

2021-06-06 15:57:16 字數 3978 閱讀 3784

3.3、

autotools工具

3.3.1、介紹

如果要編譯的工程比較大,嘗試

手動去建立、維護

makefile

的話,不僅很複雜,而且費時

費力,還

容易出錯

,這時使用

autotools工具

就是乙個不錯的選擇,

只要輸入

工程中的

目標檔案、依賴檔案、檔案目錄等

資訊就可以

自動生成makefile。

autotools工具

是個系列工具,主要有:

aclocal

、autoscan

、autoconf

、autoheader

、automake。

下面說一下使用流程,如下: ² 

在源**目錄樹的最高層執行autoscan

,生成configure.scan檔案;

² 執行aclocal,生成aclocal.m4檔案;

² 執行autoconf,生成configure配置指令碼;

² 執行autoheader

,生成config.h.in檔案;

² 手工編寫makefile.am檔案;

² 執行automake

,生成makefile.in;

² 執行配置指令碼configure,生成makefile。

3.3.2、例項

下面結合乙個例項來說明如何使用

autotools工具

。專案中有檔案:main.c、test1.c、test2.c、test1.h、test2.h。 ² 

第一步:執行

autoscan

在終端中輸入「

autoscan

」並回車執行,生成

configure.scan

,該檔案

是configure.in的原型

,而configure.in是autoconf的指令碼配置檔案。所以

在進行下一步工作

之前要對configure.scan進行修改,將其

重新命名為configure.in。configure.scan檔案內容如下:

...ac_prereq([2.64])

ac_init([full-package-name], [version], [bug-report-address])

ac_config_srcdir([

main

.c])

ac_config_headers([config.h])

...ac_output 對

configure.scan的內容

簡要說明如下:

v ac_prereq巨集宣告本檔案要求的autoconf版本。 v 

ac_init巨集定義軟體的名稱

、版本等資訊,

其中bug-report-address可以省略。 v 

ac_config_srcdir巨集用來偵測指定的檔案是否存在,來確定原始碼目錄的有效性。 v 

ac_config_header巨集用於生成config.h檔案,以便autoheader使用。

修改方法如下: v 

填寫ac_init

巨集要定義的內容。 v 

新增巨集am_init_automake

,及定義的內容。 v 

新增ac_config_files([makefile])。

v 在修改好

configure.scan檔案

後,把其改名為

configure.

in。

這樣得到的

configure.

in檔案內容如下:

...ac_prereq([2.64])

ac_init(

, 1.0, [email protected])

#修改的巨集

am_init_automake

, 1.0

) #新增的巨集

ac_config_srcdir([

main

.c]) a

m_config_headers([config.h])

...ac_config_files([makefile])

#新增的巨集

ac_output ² 

第二步:執行

aclocal

在終端中輸入「

aclocal

」並回車執行。該命令

根據configure.

in的內容生成aclocal.m4檔案

,該檔案主要處理本地的巨集定義。

² 第三步:

執行autoconf

在終端中輸入「

autoconf

」並回車執行。該命令

根據configure.

in和aclocal.m4的內容生成configure配置指令碼

,configure

指令碼是用來生成

makefile的。 ² 

第四步:

執行autoheader

在終端中輸入「

autoheader

」並回車執行。該命令用來

生成config.h.in檔案。通常

是會從「acconfig.h

」檔案中複製使用者附加的符號定義

。因為本例中沒有附加的符號定義

,所以不需要建立」acconfig.h」檔案。

² 第五步:編寫

makefile.am

automake需要指令碼配置檔案makefile.am,這個檔案

得手工建立。

內容如下: 1 

automake_options=foreign 2 

bin_programs=

_sources=main.c 

test1

.c test1

.h test2

.c test2.h

簡單說明:

第一行中

automake_options

用來設定automake的選項。

gnu對自己發布的軟體有嚴格的規範,比如必須附帶許可證宣告檔案copying等等,否則automake執行時會報錯。

automake提供了3種軟體等級:foreign、gnu

和gnits

。預設等級是gnu。

示例中使用的

是foreign

,表示只檢測必要的檔案。

第二行中

bin_programs定義了要產生的執行檔名。如果產生多個可執行檔案,每個檔名

要用空格隔開。

第三行中

file_sources定義file這個執行程式的依賴檔案

,其中「

file_sources

」中的前部分「

file

」要改寫成可執行檔名,即與

bin_programs

定義的名稱一直

。如果有多個可

執行檔案,那就要定義相應的file_sources。 ² 

第六步:執行

automake

這一步很重要,automake處理

指令碼配置檔案makefile.am

後,生成makefile.in。有一些必需的指令碼檔案,如「install-sh」、「missing」等,可以從automake軟體包裡複製過來,只需在執行時使用「--add-missing」選項即可。預設的處理方式是建立這些檔案的符號鏈結,如果再加上「--copy」選項則可以使用複製方式。執行的命令格式如下: #

automake

--add-missing --copy ² 

第七步:執行

configure

在終端中輸入「

./configure

」並回車執行,就是執行第三步生成的

configure

配置指令碼,該指令碼根據第四步生成的config.h.in和第六步生成的makefile.in的內容來生成

makefile檔案。

AutoTools工具的使用

最近一直在看linux下autotools工具的使用方法,查閱了一些資料,感覺入門級別的文章網上寫的很多,但寫的清楚明白的應該是下面這篇。a brief introduction to autoconf 而完整詳細,寫的特別棒的是這本書 autoconf,automake and libtool 各...

autotools工具使用記錄

參考 安裝順序 m4 autoconf automake 參考的博文說這個順序很重要,剛開始很納悶,後來在安裝的過程中,發現之間是有依賴關係的 安裝方法 configure make make install 使用方法 autotool工具使用到的工具有 aclocal autoscan autoc...

autotools使用流程

1 autoscan root localhost automake autoscan 它會在給定目錄及其子目錄樹中檢查原始檔,若沒有給出目錄,就在當前目錄及其子目 錄樹中進行檢查。它會搜尋原始檔以尋找一般的移植性問題並建立乙個檔案 configure.scan 該檔案就是接下來autoconf要用...