青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0
  

1.autoscan (autoconf): 掃描源代碼以搜尋普通的可移植性問題,比如檢查編譯器,庫,頭文件等,生成文件configure.scan,它是configure.ac的一個雛形。

    your source files --> [autoscan*] --> [configure.scan] --> configure.ac

2.aclocal (automake):根據(jù)已經(jīng)安裝的宏,用戶定義宏和acinclude.m4文件中的宏將configure.ac文件所需要的宏集中定義到文件 aclocal.m4中。aclocal是一個perl 腳本程序,它的定義是:“aclocal - create aclocal.m4 by scanning configure.ac”
user input files   optional input     process          output files
================ ============== ======= ============

acinclude.m4 - - - - -.
V
.-------,
configure.ac ------------------------>|aclocal|
{user macro files} ->| |------> aclocal.m4
`-------'
3.autoheader(autoconf): 根據(jù)configure.ac中的某些宏,比如cpp宏定義,運行m4,聲稱config.h.in

user input files optional input process output files
================ ============== ======= ============

aclocal.m4 - - - - - - - .
|
V
.----------,
configure.ac ----------------------->|autoheader|----> autoconfig.h.in
`----------'

4.automake: automake將Makefile.am中定義的結(jié)構(gòu)建立Makefile.in,然后configure腳本將生成的Makefile.in文件轉(zhuǎn)換 為Makefile。如果在configure.ac中定義了一些特殊的宏,比如AC_PROG_LIBTOOL,它會調(diào)用libtoolize,否則它 會自己產(chǎn)生config.guess和config.sub

user input files   optional input   processes          output files
================ ============== ========= ============

.--------,
| | - - -> COPYING
| | - - -> INSTALL
| |------> install-sh
| |------> missing
|automake|------> mkinstalldirs
configure.ac ----------------------->| |
Makefile.am ----------------------->| |------> Makefile.in
| |------> stamp-h.in
.---+ | - - -> config.guess
| | | - - -> config.sub
| `------+-'
| | - - - -> config.guess
|libtoolize| - - - -> config.sub
| |--------> ltmain.sh
| |--------> ltconfig
`----------'

5.autoconf:將configure.ac中的宏展開,生成configure腳本。這個過程可能要用到aclocal.m4中定義的宏。

user input files   optional input   processes          output files
================ ============== ========= ============

aclocal.m4 ,autoconfig.h.in - - - - - - -.
V
.--------,
configure.ac ----------------------->|autoconf|------> configure
 
6. ./configure的過程

.-------------> [config.cache]
configure* --------------------------+-------------> config.log
|
[config.h.in] -. v .--> [autoconfig.h]
+-------> config.status* -+
Makefile.in ---' `--> Makefile
 
7. make過程
 
[autoconfig.h] -.
+--> make* ---> 程序
Makefile ---'
 
.---------,
config.site - - ->| |
config.cache - - ->|configure| - - -> config.cache
| +-,
`-+-------' |
| |----> config.status
config.h.in ------->|config- |----> config.h
Makefile.in ------->| .status|----> Makefile
| |----> stamp-h
| +--,
.-+ | |
| `------+--' |
ltmain.sh ------->|ltconfig|-------> libtool
| | |
`-+------' |
|config.guess|
| config.sub |
`------------'

.--------,
Makefile ------>| |
config.h ------>| make |
{project sources} ---------------->| |--------> {project targets}
.-+ +--,
| `--------' |
| libtool |
| missing |
| install-sh |
|mkinstalldirs|
`-------------'
實例
在/hello/目錄下創(chuàng)建一個hello.c文件,并編譯運行它:

#cd /hello/

(1) 編寫源文件hello.c:

#include<stdio.h> 
int main(int argc, char** argv)
{
printf("Hello, GNU!n");
return 0;
}

[litao@vm0000131 hello]$ ll
total 4
-rw-rw-r-- 1 litao litao 68 Aug 12 12:02 hello.c

一、autoscan

[litao@vm0000131 hello]$ autoscan
autom4te: configure.ac: no such file or directory
autoscan: /usr/bin/autom4te failed with exit status: 1
[litao@vm0000131 hello]$ ll
total 8
-rw-rw-r-- 1 litao litao   0 Aug 12 12:03 autoscan.log
-rw-rw-r-- 1 litao litao 457 Aug 12 12:03 configure.scan
-rw-rw-r-- 1 litao litao  68 Aug 12 12:02 hello.c

已經(jīng)生成了configure.scan,autoscan.log文件

將configure.scan 修改為 configure.in,最后修改的內(nèi)容如下:

[litao@vm0000131 hello]$ mv configure.scan configure.in    
[litao@vm0000131 hello]$ vim configure.in 

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([hello.c])
#AC_CONFIG_HEADER([config.h])
AM_INIT_AUTOMAKE(hello, 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.
AC_OUTPUT(Makefile)

二、acloacl

[litao@vm0000131 hello]$ aclocal 

生成 aclocal.m4 和 autom4te.cache (生成aclocal.m4的過程中涉及到configure.in)

[litao@vm0000131 hello]$ ll
total 44
-rw-rw-r-- 1 litao litao 31120 Aug 12 12:08 aclocal.m4
drwxr-xr-x 2 litao litao  4096 Aug 12 12:08 autom4te.cache
-rw-rw-r-- 1 litao litao     0 Aug 12 12:03 autoscan.log
-rw-rw-r-- 1 litao litao   496 Aug 12 12:08 configure.in
-rw-rw-r-- 1 litao litao    68 Aug 12 12:02 hello.c

三、antoconf

[litao@vm0000131 hello]$ autoconf
生成 configure (根據(jù) configure.in, 和 aclocal.m4)

[litao@vm0000131 hello]$ ll
total 168
-rw-rw-r-- 1 litao litao  31120 Aug 12 12:08 aclocal.m4
drwxr-xr-x 2 litao litao   4096 Aug 12 12:11 autom4te.cache
-rw-rw-r-- 1 litao litao      0 Aug 12 12:03 autoscan.log
-rwxrwxr-x 1 litao litao 122297 Aug 12 12:11 configure
-rw-rw-r-- 1 litao litao    496 Aug 12 12:08 configure.in
-rw-rw-r-- 1 litao litao     68 Aug 12 12:02 hello.c

四、編寫Makefile.am:

AUTOMAKE_OPTIONS= foreign
bin_PROGRAMS= hello
hello_SOURCES= hello.c

五、automake

生成 Makefile.in, depcomp, install-sh, 和 missing (根據(jù) Makefile.am, 和 aclocal.m4)

[litao@vm0000131 hello]$ automake
configure.in: required file `./install-sh' not found
configure.in: required file `./missing' not found
Makefile.am: required file `./depcomp' not found
[litao@vm0000131 hello]$ automake --add-missing
configure.in: installing `./install-sh'
configure.in: installing `./missing'
Makefile.am: installing `./depcomp'
[litao@vm0000131 hello]$ ll
total 192
-rw-rw-r-- 1 litao litao  31120 Aug 12 12:08 aclocal.m4
drwxr-xr-x 2 litao litao   4096 Aug 12 12:14 autom4te.cache
-rw-rw-r-- 1 litao litao      0 Aug 12 12:03 autoscan.log
-rwxrwxr-x 1 litao litao 122297 Aug 12 12:11 configure
-rw-rw-r-- 1 litao litao    496 Aug 12 12:08 configure.in
lrwxrwxrwx 1 litao litao     31 Aug 12 12:16 depcomp -> /usr/share/automake-1.9/depcomp
-rw-rw-r-- 1 litao litao     68 Aug 12 12:02 hello.c
lrwxrwxrwx 1 litao litao     34 Aug 12 12:16 install-sh -> /usr/share/automake-1.9/install-sh
-rw-rw-r-- 1 litao litao     69 Aug 12 12:15 Makefile.am
-rw-rw-r-- 1 litao litao  16561 Aug 12 12:16 Makefile.in
lrwxrwxrwx 1 litao litao     31 Aug 12 12:16 missing -> /usr/share/automake-1.9/missing

六、configure
生成 Makefile, config.log, 和 config.status

生成makefile整個過程

configure.in :
configure.in文件內(nèi)容是一系列GNU m4 的宏,這些宏經(jīng)autoconf處理后會變成檢查系統(tǒng)特性的shell scripts。 configure.in 內(nèi)宏的順序并沒有特別的規(guī)定,但是每一個configure.in 文件必須在所有宏前加入 AC_INIT 宏,然后在所有宏的最后加上 AC_OUTPUT宏。可先用 autoscan 掃描原始文件以產(chǎn)生一個 configure.scan 文件,再對 configure.scan 做些修改成 configure.in 文件。在范例中所用到的宏如下:

dnl 
這個宏后面的字不會被處理,可以視為注釋 
AC_INIT(FILE) 
該宏用來檢查源代碼所在路徑,autoscan 會自動產(chǎn)生,一般無須修改它。 
AM_INIT_AUTOMAKE(PACKAGE,VERSION) 
這個是使用 Automake 所
必備的宏,PACKAGE 是所要產(chǎn)生軟件套件的名稱,VERSION 是版本編號。 
AC_PROG_CC 
檢查系統(tǒng)可用的C編譯器,若源代碼是用C寫的就需要這個宏。 
AC_OUTPUT(FILE) 
設(shè)置 configure 所要產(chǎn)生的文件,若是
Makefile ,configure 便會把它檢查出來的結(jié)果帶入  Makefile.in 文件后產(chǎn)生合適的 Makefile。 
實際上,這里使用 Automake 時,還需要一些其他的宏,這些額外的宏我們用 aclocal來幫助產(chǎn)生。執(zhí)行 aclocal會產(chǎn)生aclocal.m4 文件,如果無特別的用途,可以不需要修改它,用 aclocal 所產(chǎn)生的宏會告訴 Automake如何動作。 

有了 configure.in 及 aclocal.m4兩個文件以后,便可以執(zhí)行 autoconf來產(chǎn)生 configure 文件了。

Makefile.am
         Automake 會根據(jù) configure.in 中的宏把Makefile.am 轉(zhuǎn)成 Makefile.in 文件。 Makefile.am 文件定義所要產(chǎn)生的目標: 

AUTOMAKE_OPTIONS 
設(shè)置 automake 的選項。
Automake 主要是幫助開發(fā) GNU 軟件的人員來維護軟件,所以在執(zhí)行 automake 時,會檢查目錄下是否存在標準 GNU 軟件中應(yīng)具備的文件,例如 'NEWS'、'AUTHOR'、'ChangeLog' 等文件。
設(shè)置 foreign 時,automake 會改用一般軟件的標準來檢查。 
bin_PROGRAMS 
定義要產(chǎn)生的執(zhí)行文件名。如果要產(chǎn)生多個執(zhí)行文件,每個文件名用空白符隔開。 
hello_SOURCES 
定義 
'hello' 這個執(zhí)行程序所需要的原始文件。如果 'hello'這個程序是由多個原始文件所產(chǎn)生,必須把它所用到的所有原始文件都列出來,以空白符隔開。假設(shè) 'hello' 還需要 'hello.c'、'main.c'、'hello.h' 三個文件的話,則定義 
hello_SOURCES= hello.c main.c hello.h 
如果定義多個執(zhí)行文件,則對每個執(zhí)行程序都要定義相對的filename_SOURCES。 

編輯好 Makefile.am 文件,就可以用
 automake --add-missing來產(chǎn)生 Makefile.in。加上 --add-missing 選項來告訴 automake順便假如包裝一個軟件所必須的文件。Automake產(chǎn)生生出來的 Makefile.in 文件是完全符合 GNU Makefile 的慣例,只要執(zhí)行 configure這個shell script 便可以產(chǎn)生合適的 Makefile 文件了。 


轉(zhuǎn)自:
http://blog.chinaunix.net/u2/76292/showart.php?id=2099939

posted on 2009-11-21 18:33 chatler 閱讀(1648) 評論(0)  編輯 收藏 引用 所屬分類: makefile

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關(guān),覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美r片在线| 另类av一区二区| 国产精品美女久久福利网站| 正在播放亚洲一区| 亚洲欧美偷拍卡通变态| 国产一二三精品| 米奇777在线欧美播放| 亚洲国产成人高清精品| 一本久久综合| 国产欧美精品va在线观看| 久久久久国产精品一区三寸| 亚洲国产成人一区| 亚洲欧美日韩在线不卡| 黑丝一区二区| 欧美日本精品| 久久精品99国产精品| 亚洲精品社区| 久久精品国语| 99视频在线精品国自产拍免费观看| 国产精品播放| 免费影视亚洲| 午夜精品区一区二区三| 欧美黄污视频| 欧美一区二区在线免费播放| 亚洲欧洲精品一区二区三区不卡| 国产精品劲爆视频| 老**午夜毛片一区二区三区| 亚洲图片自拍偷拍| 欧美激情一区在线| 久久精品免费观看| 亚洲私人影吧| 亚洲欧洲在线观看| 国产一区999| 国产精品多人| 欧美大胆人体视频| 欧美在线免费观看视频| 日韩视频欧美视频| 欧美成人一区在线| 久久不射电影网| 亚洲私人影院在线观看| 亚洲国产日韩精品| 狠狠色狠狠色综合日日tαg| 国产精品hd| 欧美日韩国产综合网| 裸体丰满少妇做受久久99精品 | 亚洲影院在线观看| 亚洲福利久久| 免费国产自线拍一欧美视频| 亚洲欧美日韩一区二区| 一区二区三区久久精品| 亚洲人成毛片在线播放| 海角社区69精品视频| 国产精品久久久久秋霞鲁丝| 欧美精品在线一区| 欧美成人第一页| 六十路精品视频| 久久九九热re6这里有精品| 亚洲欧美另类中文字幕| 亚洲香蕉在线观看| 亚洲天堂偷拍| 一区二区三区.www| 亚洲社区在线观看| 亚洲午夜精品福利| 亚洲视频狠狠| 亚洲伊人色欲综合网| 一区二区动漫| 亚洲综合精品四区| 香蕉成人啪国产精品视频综合网| 亚洲天堂男人| 午夜国产精品视频免费体验区| 一区二区黄色| 亚洲自拍高清| 欧美中文字幕视频| 久久国产精品免费一区| 久久久久一区二区三区四区| 久久亚洲精品一区| 免费日韩成人| 欧美日韩国产欧| 国产精品多人| 国产视频在线观看一区 | 国产在线视频欧美一区二区三区| 国产精品色网| 黑人极品videos精品欧美裸| 影音先锋日韩资源| 91久久国产综合久久蜜月精品 | 国产精品丝袜久久久久久app| 国产精品香蕉在线观看| 国产精品日日摸夜夜摸av| 国产欧美日韩亚洲| 伊人成人在线视频| 亚洲精品久久| 午夜精品久久久久久久| 香蕉久久精品日日躁夜夜躁| 欧美专区在线播放| 米奇777超碰欧美日韩亚洲| 欧美激情久久久久| 国产精自产拍久久久久久| 国产一区二区三区在线观看视频 | 久久精品国产精品| 欧美成人亚洲成人| 一区二区三区精品在线| 性色av一区二区三区在线观看| 久久深夜福利免费观看| 欧美精品一区二区久久婷婷| 国产精品久久综合| 亚洲二区在线| 亚洲午夜一二三区视频| 久久久久网站| 亚洲韩国日本中文字幕| 亚洲一区二区三区777| 久久久另类综合| 欧美日韩在线视频观看| 国产又爽又黄的激情精品视频| 91久久精品www人人做人人爽| 亚洲一区二区三区四区五区午夜| 久久久精品国产免费观看同学| 亚洲国产精品一区二区第一页 | 黄网动漫久久久| 中日韩高清电影网| 快播亚洲色图| 亚洲午夜在线观看| 欧美黑人在线播放| 韩国免费一区| 亚洲自拍高清| 亚洲黑丝在线| 久久久精品国产一区二区三区 | 久久综合久久综合久久综合| 欧美日韩在线影院| 亚洲国产美女精品久久久久∴| 香蕉久久夜色精品| 亚洲乱亚洲高清| 久久亚洲色图| 国产午夜精品美女视频明星a级| 日韩午夜在线视频| 欧美成人精品| 久久精品视频在线播放| 国产精品网站在线| 亚洲午夜av在线| 亚洲国产欧美一区| 久久亚洲精品视频| 国产一区清纯| 欧美在线播放一区二区| 一本久道久久综合婷婷鲸鱼| 欧美国产先锋| 亚洲欧洲精品一区二区三区不卡| 久久久久一区二区三区| 亚洲自拍电影| 国产精品一香蕉国产线看观看| 一区二区三区黄色| 亚洲欧洲视频在线| 欧美成年人视频| 亚洲国内精品| 亚洲国产mv| 欧美激情精品久久久久| 亚洲精品美女久久久久| 欧美成人国产va精品日本一级| 久久九九有精品国产23| 精品不卡一区| 美女黄毛**国产精品啪啪| 久久精品系列| 亚洲国产精品电影在线观看| 免费成人在线观看视频| 久久青草久久| 亚洲人成77777在线观看网| 蘑菇福利视频一区播放| 久久麻豆一区二区| 激情丁香综合| 欧美二区在线播放| 嫩模写真一区二区三区三州| 亚洲国产日韩美| 亚洲国产欧美一区| 欧美日韩国产丝袜另类| 亚洲综合国产精品| 性欧美xxxx大乳国产app| 国产自产高清不卡| 欧美 日韩 国产在线 | 欧美色欧美亚洲另类七区| 亚洲素人一区二区| 亚洲伊人观看| 好吊妞**欧美| 欧美电影电视剧在线观看| 欧美r片在线| 亚洲视频在线观看网站| 亚洲一区国产| 激情久久综合| 亚洲激情在线播放| 国产精品xxxxx| 久久久久久久久久久一区| 老色批av在线精品| 一区二区三区欧美亚洲| 亚洲欧美日韩一区二区三区在线| 国语精品中文字幕| 亚洲日本中文字幕| 国产精品区一区| 嫩草国产精品入口| 欧美三级小说| 免费亚洲电影在线| 欧美色综合网| 嫩草成人www欧美| 欧美三区在线视频|