automake:autotools 工具集使用速成 automake:autotools 工具集使用速成
automake:autotools 工具集使用速成
一般而言,對於小專案或玩具程式,手動編寫 Makefile 即可。但對於大型專案,手動編寫維護 Makefile 成為一件費時費力的無聊工作。
本文介紹 autotools 工具集自動生成符合 Linux 規範的 Makefile 檔案。
如果讀者沒有安裝 autotools 工具集,ubuntu預設自帶了,如果沒有,安裝命令如下,
$ sudo apt-get install automake
安裝完成之後,會有如下工具可用,
aclocal
autoscan
autoconf
autoheader
automake
一般大型專案,程式碼組織結構分為兩種,一種是所有檔案都在同一個目錄下的 flat 結構,另一種是按層次組織的多資料夾形式。
先來看第一種:
flat 結構的專案使用 autotools 工具集
本篇測試程式碼如下,
入口程式碼 int_arithmetic.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "sum.h" #include "sub.h" #include "mul.h" #include "div.h" int main() { printf("======== < Integer Arithmethic > ========\n"); int x, y; printf("Enter two integer: "); scanf("%d%d", &x, &y); int sm = sum(x, y); printf("sum is: %d\n", sm); int sb = sub(x, y); printf("sub is: %d\n", sb); int ml = mul(x, y); printf("mul is: %d\n", ml); int dv = divide(x, y); printf("div is: %d\n", dv); return 0; }
輔助程式碼,標頭檔案,
sum.h
#ifndef SUM_H_
#define SUM_H_
int sum(int x, int y); #endif
sub.h
#ifndef SUB_H_
#define SUB_H_
int sub(int x, int y); #endif
mul.h
#ifndef MUL_H_
#define MUL_H_
int mul(int x, int y); #endif
div.h
#ifndef DIV_H_
#define DIV_H_
int divide(int x, int y); #endif
輔助程式碼,實現檔案,
sum.c
#include "sum.h"
int sum(int x, int y) { return x + y; }
sub.c
#include "sub.h"
int sub(int x, int y) { return x - y; }
mul.c
#include "mul.h"
int mul(int x, int y) { return x * y; }
div.c
#include "div.h"
#include <stdio.h>
int divide(int x, int y) { if(x % y != 0) printf("\nWarning: Integer Division May Have Accuracy Loss.\n"); return x / y; }
1) 在專案目錄下,執行 autoscan 命令,生成 configure.scan 檔案,內容如下,
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([int_arithmetic.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. AC_CHECK_HEADERS([stdlib.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT
重新命名 configure.scan 為 configure.ac ,並修改其內容為,
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_INIT(int_arithmetic, 0.1, [email protected])
AM_INIT_AUTOMAKE(int_arithmetic, 0.1)
AC_CONFIG_SRCDIR([int_arithmetic.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([stdlib.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
上述 configure.ac 中巨集定義意義如下,
AC_PREREQ : 宣告 autoconf 的版本號
AC_INIT : 宣告軟體名稱,版本號及 bug report 地址
AM_INIT_AUTOMAKE : automake 需要的資訊,引數為軟體名和版本號
AC_CONFIG_SRCDIR : autoscan 偵測的原始檔名,用來確定目錄的有效性
AC_CONFIG_HEADERS : autoscan 定義要生成的標頭檔案,後續 autoheader 要使用
AC_PROG_CC : 指定編譯器,預設為 gcc
AC_CHECK_HEADERS : autoscan 偵測到的標頭檔案
AC_CONFIG_FILES : 指定生成 Makefile,如果是多目錄結構,可指定生成多個Makefile,以空格分隔,例如,AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT : autoscan 輸出
2) 執行 aclocal,根據 configure.ac 生成 aclocal.m4 檔案,該檔案主要處理各種巨集定義
3) 執行 autoconf,將 configure.ac 中的巨集展開,生成 configure 指令碼,這過程中可能會用到 aclocal.m4
4) 執行 autoheader,生成 config.h.in 檔案,該命令通常會從 "acconfig.h” 檔案中複製使用者附加的符號定義。該例子中沒有附加的符號定義, 所以不需要建立 "acconfig.h” 檔案
5) 建立 Makefile.am 檔案,automake工具會根據 configure.in 中的參量把 Makefile.am 轉換成 Makefile.in 檔案,最終通過 Makefile.in 生成 Makefile
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=int_arithmetic
int_arithmetic_SOURCES=int_arithmetic.c sum.c sub.c mul.c div.c
include_HEADERS=sum.h sub.h mul.h div.h
對上述 makefile.am 中各標籤的解釋,
AUTOMAKE_OPTIONS : 由於 GNU 對自己釋出的軟體有嚴格的規範, 比如必須附帶許可證宣告檔案 COPYING 等,否則 automake 執行時會報錯。
automake 提供了3中軟體等級: foreign, gnu, gnits, 預設級別是gnu, 在本例中,使用 foreign 等級,它只檢測必須的檔案。
bin_PROGRAMS : 要生成的可執行檔名稱,如果要生成多個可執行檔案,用空格隔開。
int_arithmetic_SOURCES : 可執行檔案依賴的所有原始檔。
6) 手動新增必要的檔案 NEWS,README,AUTHORS,ChangeLog
7) 執行 automake --add-missing ,該命令生成 Makefile.in 檔案。使用選項 "--add-missing" 可以讓 automake 自動新增一些必需的指令碼檔案。
8) 執行 ./configure 生成 Makefile
====>>> 至此 Makefile 生成完畢。
如果要繼續安裝,
9) $ make
10) $ sudo make install 即可將可執行檔案安裝在 /usr/local/bin/ 目錄下,以後就可以直接使用啦
11) $ sudo make uninstall 即可將安裝的可執行檔案從 /usr/local/bin 目錄下移除
如果要釋出你的軟體,
12) $ make dist 即可打包生成 xxx-version.tar.gz 檔案
如果要清理中間檔案,
13) make clean
14) make distclean
層次結構的專案使用 autotools 工具集
當前專案層次結構如下圖,
主入口函式 int_arithmetic.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "include/sum.h" #include "include/sub.h" #include "include/mul.h" #include "include/div.h" int main() { printf("======== < Integer Arithmethic > ========\n"); int x, y; printf("Enter two integer: "); scanf("%d%d", &x, &y); int sm = sum(x, y); printf("sum is: %d\n", sm); int sb = sub(x, y); printf("sub is: %d\n", sb); int ml = mul(x, y); printf("mul is: %d\n", ml); int dv = divide(x, y); printf("div is: %d\n", dv); return 0; }
標頭檔案,
sum.h
#ifndef SUM_H_
#define SUM_H_
int sum(int x, int y); #endif
sub.h
#ifndef SUB_H_
#define SUB_H_
int sub(int x, int y); #endif
mul.h
#ifndef MUL_H_
#define MUL_H_
int mul(int x, int y); #endif
div.h
#ifndef DIV_H_
#define DIV_H_
int divide(int x, int y); #endif
實現檔案,
sum.c
#include "../include/sum.h"
int sum(int x, int y) { return x + y; }
sub.c
#include "../include/sub.h"
int sub(int x, int y) { return x - y; }
mul.c
#include "../include/mul.h"
int mul(int x, int y) { return x * y; }
div.c
#include "../include/div.h"
#include <stdio.h>
int divide(int x, int y) { if(x % y != 0) printf("\nWarning: Integer Division May Have Accuracy Loss.\n"); return x / y; }
1) 在專案頂層目錄,建立檔案 Makefile.am, 內容如下,
AUTOMAKE_OPTIONS=foreign # 軟體等級 SUBDIRS=src # 先掃描子目錄 bin_PROGRAMS=int_arithmetic # 軟體生成後的可執行檔名稱 int_arithmetic_SOURCES=int_arithmetic.c # 當前目錄原始檔 int_arithmetic_LDADD=src/libsrc.a # 靜態連線方式,連線 src 下生成的 libsrc.a 檔案 #LIBS = -l xxx -l xxx # 新增必要的庫
在 src 目錄,建立檔案 Makefile.am,內容如下,
noinst_LIBRARIES=libsrc.a # 生成的靜態庫檔名稱,noinst加上之後是隻編譯,不安裝到系統中 libsrc_a_SOURCES=sum.c sub.c mul.c div.c # 這個靜態庫檔案需要用到的依賴 include_HEADERS=../include/sum.h ../include/sub.h ../include/mul.h ../include/div.h # 匯入需要依賴的標頭檔案
2) 執行 autoscan 生成 configure.scan 檔案, 如下,
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([int_arithmetic.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. AC_CHECK_HEADERS([stdlib.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT
重新命名 configure.scan 為 configure.ac 並修改如下,
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_INIT(int_arithmetic, 0.1, [email protected])
AM_INIT_AUTOMAKE(int_arithmetic, 0.1)
# Generate static lib
AC_PROG_RANLIB
AC_CONFIG_SRCDIR([int_arithmetic.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([stdlib.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile
src/Makefile])
AC_OUTPUT
3) 執行 aclocal
4) 執行 autoconf
5) 執行 autoheader
6) 手動新增必要的檔案 NEWS,README,AUTHORS,ChangeLog
7) 執行 automake --add-missing
8) 執行 ./configure 生存 Makefile
====>>> 至此 Makefile 生成完畢。
如果要繼續安裝,
9) $ make
10) $ sudo make install 即可將可執行檔案安裝在 /usr/local/bin/ 目錄下,以後就可以直接使用啦
11) $ sudo make uninstall 即可將安裝的可執行檔案從 /usr/local/bin 目錄下移除
如果要釋出你的軟體,
12) $ make dist 即可打包生成 xxx-version.tar.gz 檔案
如果要清理中間檔案,
13) make clean
14) make distclean
最後做一個autotools使用的流程總結:
1. 執行autoscan命令。這個命令主要用於掃描工作目錄,並且生成configure.scan檔案。
2. 修改configure.scan為configure.ac檔案,並且修改配置內容。
3. 執行aclocal命令。掃描 configure.ac 檔案生成 aclocal.m4檔案。
4. 執行autoconf命令,這個命令將 configure.ac 檔案中的巨集展開,生成 configure 指令碼。
5. 執行autoheader命令,該命令生成 config.h.in 檔案。
6. 編寫Makefile.am檔案。
7. 執行automake --add-missing命令,該命令生成 Makefile.in 檔案。
8. 執行 ./congigure命令,將Makefile.in命令生成Makefile檔案。
9. 執行make命令,生成可執行檔案。
如果需要更更多細節,請參考原創部落格:
http://blog.csdn.net/initphp/article/details/43705765
一般而言,對於小專案或玩具程式,手動編寫 Makefile 即可。但對於大型專案,手動編寫維護 Makefile 成為一件費時費力的無聊工作。
本文介紹 autotools 工具集自動生成符合 Linux 規範的 Makefile 檔案。
如果讀者沒有安裝 autotools 工具集,ubuntu預設自帶了,如果沒有,安裝命令如下,
$ sudo apt-get install automake
安裝完成之後,會有如下工具可用,
aclocal
autoscan
autoconf
autoheader
automake
一般大型專案,程式碼組織結構分為兩種,一種是所有檔案都在同一個目錄下的 flat 結構,另一種是按層次組織的多資料夾形式。
先來看第一種:
flat 結構的專案使用 autotools 工具集
本篇測試程式碼如下,
入口程式碼 int_arithmetic.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "sum.h" #include "sub.h" #include "mul.h" #include "div.h" int main() { printf("======== < Integer Arithmethic > ========\n"); int x, y; printf("Enter two integer: "); scanf("%d%d", &x, &y); int sm = sum(x, y); printf("sum is: %d\n", sm); int sb = sub(x, y); printf("sub is: %d\n", sb); int ml = mul(x, y); printf("mul is: %d\n", ml); int dv = divide(x, y); printf("div is: %d\n", dv); return 0; }
輔助程式碼,標頭檔案,
sum.h
#ifndef SUM_H_
#define SUM_H_
int sum(int x, int y); #endif
sub.h
#ifndef SUB_H_
#define SUB_H_
int sub(int x, int y); #endif
mul.h
#ifndef MUL_H_
#define MUL_H_
int mul(int x, int y); #endif
div.h
#ifndef DIV_H_
#define DIV_H_
int divide(int x, int y); #endif
輔助程式碼,實現檔案,
sum.c
#include "sum.h"
int sum(int x, int y) { return x + y; }
sub.c
#include "sub.h"
int sub(int x, int y) { return x - y; }
mul.c
#include "mul.h"
int mul(int x, int y) { return x * y; }
div.c
#include "div.h"
#include <stdio.h>
int divide(int x, int y) { if(x % y != 0) printf("\nWarning: Integer Division May Have Accuracy Loss.\n"); return x / y; }
1) 在專案目錄下,執行 autoscan 命令,生成 configure.scan 檔案,內容如下,
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([int_arithmetic.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. AC_CHECK_HEADERS([stdlib.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT
重新命名 configure.scan 為 configure.ac ,並修改其內容為,
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_INIT(int_arithmetic, 0.1, [email protected])
AM_INIT_AUTOMAKE(int_arithmetic, 0.1)
AC_CONFIG_SRCDIR([int_arithmetic.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([stdlib.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
上述 configure.ac 中巨集定義意義如下,
AC_PREREQ : 宣告 autoconf 的版本號
AC_INIT : 宣告軟體名稱,版本號及 bug report 地址
AM_INIT_AUTOMAKE : automake 需要的資訊,引數為軟體名和版本號
AC_CONFIG_SRCDIR : autoscan 偵測的原始檔名,用來確定目錄的有效性
AC_CONFIG_HEADERS : autoscan 定義要生成的標頭檔案,後續 autoheader 要使用
AC_PROG_CC : 指定編譯器,預設為 gcc
AC_CHECK_HEADERS : autoscan 偵測到的標頭檔案
AC_CONFIG_FILES : 指定生成 Makefile,如果是多目錄結構,可指定生成多個Makefile,以空格分隔,例如,AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT : autoscan 輸出
2) 執行 aclocal,根據 configure.ac 生成 aclocal.m4 檔案,該檔案主要處理各種巨集定義
3) 執行 autoconf,將 configure.ac 中的巨集展開,生成 configure 指令碼,這過程中可能會用到 aclocal.m4
4) 執行 autoheader,生成 config.h.in 檔案,該命令通常會從 "acconfig.h” 檔案中複製使用者附加的符號定義。該例子中沒有附加的符號定義, 所以不需要建立 "acconfig.h” 檔案
5) 建立 Makefile.am 檔案,automake工具會根據 configure.in 中的參量把 Makefile.am 轉換成 Makefile.in 檔案,最終通過 Makefile.in 生成 Makefile
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=int_arithmetic
int_arithmetic_SOURCES=int_arithmetic.c sum.c sub.c mul.c div.c
include_HEADERS=sum.h sub.h mul.h div.h
對上述 makefile.am 中各標籤的解釋,
AUTOMAKE_OPTIONS : 由於 GNU 對自己釋出的軟體有嚴格的規範, 比如必須附帶許可證宣告檔案 COPYING 等,否則 automake 執行時會報錯。
automake 提供了3中軟體等級: foreign, gnu, gnits, 預設級別是gnu, 在本例中,使用 foreign 等級,它只檢測必須的檔案。
bin_PROGRAMS : 要生成的可執行檔名稱,如果要生成多個可執行檔案,用空格隔開。
int_arithmetic_SOURCES : 可執行檔案依賴的所有原始檔。
6) 手動新增必要的檔案 NEWS,README,AUTHORS,ChangeLog
7) 執行 automake --add-missing ,該命令生成 Makefile.in 檔案。使用選項 "--add-missing" 可以讓 automake 自動新增一些必需的指令碼檔案。
8) 執行 ./configure 生成 Makefile
====>>> 至此 Makefile 生成完畢。
如果要繼續安裝,
9) $ make
10) $ sudo make install 即可將可執行檔案安裝在 /usr/local/bin/ 目錄下,以後就可以直接使用啦
11) $ sudo make uninstall 即可將安裝的可執行檔案從 /usr/local/bin 目錄下移除
如果要釋出你的軟體,
12) $ make dist 即可打包生成 xxx-version.tar.gz 檔案
如果要清理中間檔案,
13) make clean
14) make distclean
層次結構的專案使用 autotools 工具集
當前專案層次結構如下圖,
主入口函式 int_arithmetic.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "include/sum.h" #include "include/sub.h" #include "include/mul.h" #include "include/div.h" int main() { printf("======== < Integer Arithmethic > ========\n"); int x, y; printf("Enter two integer: "); scanf("%d%d", &x, &y); int sm = sum(x, y); printf("sum is: %d\n", sm); int sb = sub(x, y); printf("sub is: %d\n", sb); int ml = mul(x, y); printf("mul is: %d\n", ml); int dv = divide(x, y); printf("div is: %d\n", dv); return 0; }
標頭檔案,
sum.h
#ifndef SUM_H_
#define SUM_H_
int sum(int x, int y); #endif
sub.h
#ifndef SUB_H_
#define SUB_H_
int sub(int x, int y); #endif
mul.h
#ifndef MUL_H_
#define MUL_H_
int mul(int x, int y); #endif
div.h
#ifndef DIV_H_
#define DIV_H_
int divide(int x, int y); #endif
實現檔案,
sum.c
#include "../include/sum.h"
int sum(int x, int y) { return x + y; }
sub.c
#include "../include/sub.h"
int sub(int x, int y) { return x - y; }
mul.c
#include "../include/mul.h"
int mul(int x, int y) { return x * y; }
div.c
#include "../include/div.h"
#include <stdio.h>
int divide(int x, int y) { if(x % y != 0) printf("\nWarning: Integer Division May Have Accuracy Loss.\n"); return x / y; }
1) 在專案頂層目錄,建立檔案 Makefile.am, 內容如下,
AUTOMAKE_OPTIONS=foreign # 軟體等級 SUBDIRS=src # 先掃描子目錄 bin_PROGRAMS=int_arithmetic # 軟體生成後的可執行檔名稱 int_arithmetic_SOURCES=int_arithmetic.c # 當前目錄原始檔 int_arithmetic_LDADD=src/libsrc.a # 靜態連線方式,連線 src 下生成的 libsrc.a 檔案 #LIBS = -l xxx -l xxx # 新增必要的庫
在 src 目錄,建立檔案 Makefile.am,內容如下,
noinst_LIBRARIES=libsrc.a # 生成的靜態庫檔名稱,noinst加上之後是隻編譯,不安裝到系統中 libsrc_a_SOURCES=sum.c sub.c mul.c div.c # 這個靜態庫檔案需要用到的依賴 include_HEADERS=../include/sum.h ../include/sub.h ../include/mul.h ../include/div.h # 匯入需要依賴的標頭檔案
2) 執行 autoscan 生成 configure.scan 檔案, 如下,
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([int_arithmetic.c]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. AC_CHECK_HEADERS([stdlib.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT
重新命名 configure.scan 為 configure.ac 並修改如下,
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_INIT(int_arithmetic, 0.1, [email protected])
AM_INIT_AUTOMAKE(int_arithmetic, 0.1)
# Generate static lib
AC_PROG_RANLIB
AC_CONFIG_SRCDIR([int_arithmetic.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
AC_CHECK_HEADERS([stdlib.h unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile
src/Makefile])
AC_OUTPUT
3) 執行 aclocal
4) 執行 autoconf
5) 執行 autoheader
6) 手動新增必要的檔案 NEWS,README,AUTHORS,ChangeLog
7) 執行 automake --add-missing
8) 執行 ./configure 生存 Makefile
====>>> 至此 Makefile 生成完畢。
如果要繼續安裝,
9) $ make
10) $ sudo make install 即可將可執行檔案安裝在 /usr/local/bin/ 目錄下,以後就可以直接使用啦
11) $ sudo make uninstall 即可將安裝的可執行檔案從 /usr/local/bin 目錄下移除
如果要釋出你的軟體,
12) $ make dist 即可打包生成 xxx-version.tar.gz 檔案
如果要清理中間檔案,
13) make clean
14) make distclean
最後做一個autotools使用的流程總結:
1. 執行autoscan命令。這個命令主要用於掃描工作目錄,並且生成configure.scan檔案。
2. 修改configure.scan為configure.ac檔案,並且修改配置內容。
3. 執行aclocal命令。掃描 configure.ac 檔案生成 aclocal.m4檔案。
4. 執行autoconf命令,這個命令將 configure.ac 檔案中的巨集展開,生成 configure 指令碼。
5. 執行autoheader命令,該命令生成 config.h.in 檔案。
6. 編寫Makefile.am檔案。
7. 執行automake --add-missing命令,該命令生成 Makefile.in 檔案。
8. 執行 ./congigure命令,將Makefile.in命令生成Makefile檔案。
9. 執行make命令,生成可執行檔案。
如果需要更更多細節,請參考原創部落格:
http://blog.csdn.net/initphp/article/details/43705765