1.新建一個(gè)簡(jiǎn)單的c程序文件 main.c
內(nèi)容如下:
1 #include?
?? 2 int main()
?? 3 {
?? 4? ???printf("auto create makefile! ");
?? 5? ???return 0;
?? 6 }
2.在shell下運(yùn)行autosan命令來(lái)生成autoscan.log??configure.scan兩個(gè)文件
3.重命名configure.scan為configure.in (mv configure.scan configure.in)
4.修改configure.in 為符合自己條件的文件
自動(dòng)生成修改前的內(nèi)容為:
# -*- 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([main.c])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT
修改后的為:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
#確保使用的是足夠新的Autoconf版本。如果用于創(chuàng)建configure的Autoconf的版本比version 要早,就在標(biāo)準(zhǔn)>錯(cuò)誤輸出打印一條錯(cuò)誤消息并不會(huì)創(chuàng)建configure。
AC_PREREQ([2.69])
#初始化,定義軟件的基本信息,包括設(shè)置包的全稱(chēng),版本號(hào)以及報(bào)告BUG時(shí)需要用的郵箱地址
AC_INIT([main], [1.0], [zhanghaozheng@jiehun.com.cn])
#用來(lái)偵測(cè)所指定的源碼文件是否存在,來(lái)確定源碼目錄的有效性
AC_CONFIG_SRCDIR([main.c])
#用于生成config.h文件,以便autoheader使用
AC_CONFIG_HEADERS([config.h])
#添加宏AM_INIT_AUTOMAKE, 它是automake所必備的宏,也同前面一樣,PACKAGE是所要產(chǎn)生軟件套件的名稱(chēng),VERSION是版本編號(hào)。
AM_INIT_AUTOMAKE(main,1.0)
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
#創(chuàng)建輸出文件。在`configure.in'的末尾調(diào)用本宏一次。
AC_OUTPUT([Makefile])
5.運(yùn)行aclocal命令 生成??aclocal.m4??autom4te.cache兩個(gè)文件
6.運(yùn)行autoconf生成configure shell文件
7.運(yùn)行autoheader生成config.h.in文件
8.下面開(kāi)始準(zhǔn)備運(yùn)行automake命令生成makefile,不過(guò)在此之前要先寫(xiě)一個(gè)automake所需要的配置文件 Makefile.am
內(nèi)容為:
#automake提供了三種軟件等級(jí):foreign、gnu和gnits,讓用 戶(hù)選擇采用,默認(rèn)等級(jí)為gnu。在本例使用foreign等級(jí),它只檢測(cè)必須的文件
AUTOMAKE_OPTIONS=foreign
#定義要產(chǎn)生的執(zhí)行文件名。如果要產(chǎn)生多個(gè)執(zhí)行文件,每個(gè)文件名用空格隔開(kāi)
bin_PROGRAMS=main
#main_SOURCES定義“main”這個(gè)執(zhí)行程序所需要的原始文件。如果”main”這個(gè)程序是由多個(gè)原始文件所產(chǎn)生的,
則必須把它所用到的 所有原 始文件都列出來(lái),并用空格隔開(kāi)。
main_SOURCES=main.c
9.使用automake對(duì)其生成“configure.in”文件,在這里使用選項(xiàng)“—adding-missing”可以讓automake自動(dòng)添加有一些必需的腳本文件。
? ?運(yùn)行automake --add-missing
運(yùn)行結(jié)果:
[work@zhz study_c]$ automake --add-missing
configure.in:17: installing `./install-sh'
configure.in:17: installing `./missing'
Makefile.am: installing `./depcomp'
10.運(yùn)行configure ./configure 生成Makefile文件供make使用
11.運(yùn)行make命令 生成main可執(zhí)行文件 ./main 執(zhí)行此文件輸出結(jié)果
[work@zhz study_c]$ ./main?
auto create makefile!
12.大功告成,以后不用再對(duì)這些文件感到莫名其妙了。開(kāi)源的世界就是強(qiáng)大。
評(píng)論
查看更多