GNU autotools 安裝和使用

2021-07-03 17:21:52 字數 2725 閱讀 4667

2. 安裝

m4-1.4.11.tar.gz

autoconf-2.63.tar.gz

automake-1.9.1.tar.gz

3. autotools五工具

4. autotools使用流程

第一步:手工編寫makefile.am這個檔案

第二步:在源**目錄樹的最高層執行autoscan。然後手動修改configure.scan檔案,並改名為configure.ac/configure.in

第三步:執行aclocal,它會根據configure.ac的內容生成aclocal.m4檔案

第四步:執行autoconf,它根據configure.ac和aclocal.m4的內容生成configure這個配置指令碼檔案

第五步:執行automake –add-missing,它根據makefile.am的內容生成makefile.in

第六步:執行configure,它會根據makefile.in的內容生成makefile這個檔案

5. 流程圖

6. 舉例

# cat hello.c 

#include

#include "include/hello.h"

int main()

# cat makefile.am   //automake使用

subdirs = lib

automake_options = foreign

bin_programs = hello

hello_sources = hello.c

hello_ldadd = lib/libprint.a

automake_options為設定automake的選項。automake提供了3種軟體等級:

subdirs:子目錄選項

bin_programs:如果多個執行檔案, 用空格隔開

hello_sources:」hello」這個可執行程式所需的原始檔案。如果」hello」這個程式是由多個原始檔所產生, 所有原始檔用空格隔開

# cat lib/makefile.am

noinst_libraries = libprint.a

libprint_a_sources = print.c ../include/print.h

# ls include

hello.h

print.h

7. 開始使用

# autoscan
生成configure.scan

//修改(軟體名稱, 版本資訊, bug匯報e-mail)

ac_init([

full

-package

-name],

[version]

, [bug-report

-address])

//為ac_init(hello, 0.01,

[[email protected]]

)am_init_automake

ac_prog_ranlib

重新命名為configure.ac

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

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

ac_prog_cc:用來指定編譯器,如果不指定,預設gcc

ac_config_files:巨集用於生成相應的makefile檔案

ac_output:用來設定 configure 所要產生的檔案,如果是makefile,configure 會把它檢查出來的結果帶入makefile.in檔案產生合適的makefile

# aclocal

# autoconf

# autoheader

# automake --add-missing

automake工具會根據 configure.in 中的參量把 makefile.am 轉換成 makefile.in 檔案

–add-missing:可以讓 automake 自動新增一些必需的指令碼檔案

再次執行,可以輔助生成幾個必要的檔案:

makefile.am: required file `./news' not found

makefile.am: required file `./readme' not found

makefile.am: required file `./authors' not found

makefile.am: required file `./changelog' not found

解決辦法:手動touch

# ./configure

# make

使用GNU Autotools製作Makefile

最近用了一些開源軟體,它們都有統一的安裝方法,非常方便 configure make make install 於是我也鳥槍換炮,給自己的原始碼用上了automake和autoconf。下面這張流程圖顯示了製作makefile的全過程 autoconf工具的作用是檢查工程依賴的庫檔案和標頭檔案,同時...

學習GNU autotools的好資料

收集一些gnu方面的學習資料方便查詢幫助 gnu autoconf,automake and libtool automake autoconf gnu document 使用autotools生成makefile檔案入門 makefile學習與高階之makefile.am和 m 的意思 gnu a...

docker安裝和caffe安裝

第一步 啟動ubuntu安裝docker root lyf virtual machine apt get install docker.io 第二步 第三步 開啟docker root lyf virtual machine sudo service docker start root lyf v...