autotools工具使用記錄

2022-05-28 13:51:12 字數 1867 閱讀 8251

參考

安裝順序  m4->autoconf->automake  (參考的博文說這個順序很重要,剛開始很納悶,後來在安裝的過程中,發現之間是有依賴關係的)

安裝方法:./configure  ->   make  ->  make install

使用方法

autotool工具使用到的工具有:

aclocal

autoscan

autoconf

autoheader

automake

自動生成makefile的過程中需要做的有:

1 編寫makefile.am檔案

1 subdirs =lib #若需要編譯的原始檔在乙個子目錄下(lib為你的子目錄名),需要申明,如果沒有就沒有必要寫

23 automake_options =foreign #如果不新增此行,會在執行automake -a 命令時報錯,找不到「news」「readme」「authors」「changelog"等檔案

4 bin_programs =hello   #需要生成的目標檔案

5 hello_sources =hello.c  #原始檔

67 hello_ldadd = ./lib/libprint.a  #依賴到庫檔案

1 noinst_libraries =libprint.a  #需生成的鏈結庫 noinst_ 只想編譯不安裝到系統中,inst_安裝到系統中

2 libprint_a_sources = print.c ../include/print.h #依賴檔案

注意:如果此時,print.h若又包含乙個base.h標頭檔案,以上的寫法就要做修改,libprint_a_sources 可用修改如下  

libprint_a_sources = print.c

然後再新增一行:am_cppflags= -i  ../include 即可,最後在專案根目錄的makefile.am中新增這一行。

2  執行命令 autoscan 生成檔案configure.scan,修改此檔案,另存為configure.ac.修改或新增的內容如下:

1 ac_prereq([2.69])2

ac_init(hello,0.01) #生成程式名,版本號,聯絡郵箱

34 am_init_automake #此處為新增的56

ac_prog_ranlib #此處為新增的,沒有使用到自定義的庫的時候,不新增此行也不會報錯78

ac_config_srcdir([hello.c])

9ac_config_headers([config.h])

1011 # checks for

programs.

12ac_prog_cc

1314 # checks for

libraries.

1516 # checks for

header files.

1718 # checks for

typedefs, structures, and compiler characteristics.

1920 # checks for

library functions.

2122

ac_config_files([makefile

23 lib/makefile])

24 ac_output

3  執行命令  aclocal

4  執行命令  autoconf

5  執行命令  autoheader

6  執行命令  automake  -a

7  執行命令  ./configure

8   make

AutoTools工具的使用

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

autotools工具介紹

3.3 autotools工具 3.3.1 介紹 如果要編譯的工程比較大,嘗試 手動去建立 維護 makefile 的話,不僅很複雜,而且費時 費力,還 容易出錯 這時使用 autotools工具 就是乙個不錯的選擇,只要輸入 工程中的 目標檔案 依賴檔案 檔案目錄等 資訊就可以 自動生成makef...

autotools使用流程

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