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

隨筆 - 70, 文章 - 0, 評論 - 9, 引用 - 0
數(shù)據(jù)加載中……

MSYS下automake使用,以及configure.in和Makefile.am的修改

automake使用:

    1
)運行autoscan命令,產(chǎn)生configure.scan文件;
    2
)將configure.scan 文件重命名為configure.in,并修改configure.in文件;
    3
)運行aclocal命令,產(chǎn)生aclocal.m4文件;
    4
)運行autoconf命令,產(chǎn)生configure文件;
    5
)新建Makefile.am文件,新建NEWS README ChangeLog AUTHORS文件;
    6
)修改Makefile.am,并運行automake -a命令;(也可automake –add-missing
    7
)運行./confiugre腳本。
    8
)至此,Makefile已生產(chǎn),然后執(zhí)行make編譯即可。


其中configure.in和Makefile.am需要手動修改。

configure.in

原理:Autoconf 是用來產(chǎn)生 'configure' 檔的工具。'configure' 是一個 shell script,它可以自動設定原始程序以符合各

種不同平臺上 Unix 系統(tǒng)的特性,并且根據(jù)系統(tǒng)叁數(shù)及環(huán)境產(chǎn)生合適的 Makefile 檔或是C 的標頭檔 (header file),讓原始

程序可以很方便地在這些不同的平臺上被編譯出來。Autoconf 會讀取 configure.in 檔然後產(chǎn)生 'configure' 這個 shell

script。

configure.in 檔的內(nèi)容是一連串 GNU m4 的巨集,這些巨集經(jīng)過autoconf 處理後會變成檢查系統(tǒng)特徵的 shell script。

configure.in 內(nèi)巨集的順序并沒有特別的規(guī)定,但是每一個 configure.in 檔必須在所有巨集前加入 AC_INIT 巨集,然後在

所有巨集的最後面加上 AC_OUTPUT 巨集。我們可先用 autoscan 掃描原始檔以產(chǎn)生一個 configure.scan 檔,再對

configure.scan 做些修改成 configure.in 檔。

示例:
AC_INIT(src/hello.c)

AM_CONFIG_HEADER(config.h)

AM_INIT_AUTOMAKE(GnomeHello, 0.1)

AM_MAINTAINER_MODE

AM_ACLOCAL_INCLUDE(macros)

GNOME_INIT

AC_PROG_CC
AC_ISC_POSIX
AC_HEADER_STDC
AC_ARG_PROGRAM
AM_PROG_LIBTOOL

GNOME_COMPILE_WARNINGS

ALL_LINGUAS="da de es fr gl nl no pl ru sv fi uk"
AM_GNU_GETTEXT

AC_SUBST(CFLAGS)
AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS)

AC_OUTPUT([
Makefile
macros/Makefile
src/Makefile
intl/Makefile
po/Makefile.in
pixmaps/Makefile
doc/Makefile
doc/C/Makefile
doc/es/Makefile
])
 
dnl 后面的字不會被處理,可視為注解。

AC_INIT(FILE) 用來檢查原始碼所在的路徑,autoscan 會自動產(chǎn)生

AM_INIT_AUTOMAKE(PACKAGE,VERSION) 是使用 Automake 所必備的巨集,PACKAGE 是我們所要產(chǎn)生軟體套件的名稱,VERSION

是版本編號。

AM_MAINTAINER_MODE([enable]) 是否可以重新編譯。關閉缺省時僅供程序維護者使用的makefile目標,并修改以使configure能理解 --enable-maintainer-mode選項。--enable-maintainer-mode將maintaineronly目標重新打 開。僅供維護者使用的makefile目標允許最終用戶清除自動生成的文件, 比如configure,這意味著要修復編譯故障,必須安裝有autoconf和automake軟件。注意, 因為autogen.sh腳本主要是給開發(fā)人員用的,autogen.sh會自動傳遞一個--enable- maintainer-mode選項給configure。
AM_MAINTAINER_MODE allows you to choose whether the so called "rebuild rules" should be enabled or disabled. With AM_MAINTAINER_MODE([enable]), they are enabled by default, otherwise they are disabled by default. In the latter case, if you have AM_MAINTAINER_MODE in configure.ac, and run ‘./configure && make’, then make will *never* attempt to rebuild configure, Makefile.ins, Lex or Yacc outputs, etc. I.e., this disables build rules for files that are usually distributed and that users should normally not have to update.

AM_ACLOCAL_INCLUDE 制定一個附加目錄。

AC_PROG_CC 檢查系統(tǒng)可用的 C 編譯器,如果原始程序是用 C 寫的就需要這個巨集。
AC_PROG_CXX 制定C++編譯器。

AC_ISC_POSIX 添加一些在某些平臺上實現(xiàn)POSIX兼容需要的標志。

AC_HEADER_STDC 檢查當前平臺上是否有標準的ANSI頭文件,如果有,則定義STDC_HEADERS。

AC_ARG_PROGRAM 添加一些選項到configure中,讓用戶能夠修改安裝程序的名稱(如果在用戶系統(tǒng)上碰巧有一個與要安裝的程序名稱相同的程序,這是很有用的)。

AM_PROG_LIBTOOL 是由automake用來設置libtool的用途的。只在計劃編譯共享庫或動態(tài)可加載模塊時才需要設置這個值。

ALL_LINGUAS=“es”不是一個宏,只是一句shell代碼。它包含一個由空格分隔的語言種類縮寫表,對應于po子目錄下的.po文件。.po文件包含翻譯成其他語言的文本,所以ALL_LINGUAS應該列出程序已經(jīng)被翻譯成的所有語言。

AC_SUBST 輸出一個變量到由configure生成的文件中。

AC_CHECK_LIB(lib, function[, action_if_found[, action_if_not_found[, other_libs]]]) 對庫文件進行檢查。檢查lib庫

中是否存在制定的函數(shù),當測試成功時,執(zhí)行shell命令action_if_found,或者當action_if_found為空時在輸出變量LIBS中添

加-llib。action_if_not_found把-lother_libs選項傳給link命令。
如:AC_CHECK_LIB([pthread], [pthread_rwlock_init]):測試pthread庫中是否存在pthread_rwlock_init函數(shù)。

AC_OUTPUT(FILE) 設定 configure 所要產(chǎn)生的檔案,如果是 Makefile 的話,configure 便會把它檢查出來的結果帶入

Makefile.in 檔然後產(chǎn)生合適的 Makefile。

實際上,我們使用 Automake 時,還須要一些其它的巨集,這些額外的巨集我們用 aclocal 來幫我們產(chǎn)生。執(zhí)行 aclocal 會

產(chǎn)生 aclocal.m4 檔,如果沒有特別的用途,我們可以不必修改它,用 aclocal 所產(chǎn)生的巨集會告訴 Automake 怎麼做。 


參考
http://developer.gnome.org/doc/GGAD/z69.html
http://www.ibm.com/developerworks/cn/linux/l-makefile/
http://oss.org.cn/ossdocs/gnu/linux1/makefile.html
http://socol.javaeye.com/blog/518863
http://blog.csdn.net/HNArke/archive/2010/06/25/5694723.aspx


Makefile.am
automake處理Makefile.am,生成一個符合標準的Makefile.in文件。
一般情況是在最上層目錄下寫一個Makefile.am,然后在每一個子目錄下分別寫一個Makefile.am文件。automake會從最 上層開始遞歸處理各個Makefile.am,然后生成一個Makefile.in。

可執(zhí)行文件:
bin_PROGRAMS=foo
foo_SOURCES=xxx.c
foo_LDADD=
foo_LDFLAGS=
foo_DEPENDENCIES=

靜態(tài)庫:
lib_LIBRARIES=libfoo.a
foo_a_SOURCES=
foo_a_LDADD=
foo_a_LIBADD=
foo_a_LDFLAGS=

頭文件:
include_HEADERS=foo.h

數(shù)據(jù)文件:
data_DATA=data1 data2

對于可執(zhí)行文件和靜態(tài)庫類型,如果只想編譯,不想安裝到系統(tǒng)中,可以用noinst_PROGRAMS代替bin_PROGRAMS,noinst_LIBRARIES代替lib_LIBRARIES。

可用的全局變量
INCLUDES 鏈接時所需要的頭文件
LDADD 鏈接時所需要的庫文件
LDFLAGS 鏈接時所需要的庫文件選項標志
EXTRA_LIST 源程序和一些默認的文件將自動打入.tar.gz包,其他文件若要進入.tar.gz包可以用這種辦法,比如配置文件,數(shù)據(jù)文件等。
SUBDIRS 在處理本目錄之前要遞歸哪些子目錄

在Makefile.am中盡量使用相對路徑,系統(tǒng)預定義了兩個基本路徑:
$(top_srcdir) 工程最頂層目錄,用于引用源程序
$(top_builddir) 定義了生成目標文件上最上層的目錄,用于引用.o等編譯出來的目標文件


http://oss.org.cn/ossdocs/gnu/linux1/makefile.html

posted on 2011-01-18 10:20 seahouse 閱讀(4596) 評論(0)  編輯 收藏 引用 所屬分類: 編譯

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲小视频在线| 国产一区二区三区久久| 久久久免费精品| 国产精品久久久久久久久久三级| 麻豆精品一区二区综合av| 国产精品三区www17con| 日韩午夜在线观看视频| 最新成人av网站| 久久免费偷拍视频| 久久久久久亚洲综合影院红桃| 国产精品电影网站| 一区二区av在线| 99精品国产热久久91蜜凸| 乱码第一页成人| 蜜臀a∨国产成人精品| 国产在线精品成人一区二区三区| 亚洲午夜精品国产| 午夜精品国产更新| 欧美午夜精品久久久| 亚洲另类自拍| 亚洲视频在线播放| 国产精品户外野外| 亚洲性感激情| 欧美一区二区三区在线| 国产伦精品一区二区三区视频黑人 | 久久精品成人一区二区三区| 国产精品wwwwww| 亚洲欧美不卡| 久久久亚洲人| 亚洲丶国产丶欧美一区二区三区| 久久亚洲欧美国产精品乐播| 免费在线看一区| 亚洲精品乱码久久久久久蜜桃麻豆| 久久欧美中文字幕| 亚洲经典视频在线观看| 在线视频欧美日韩精品| 国产精品一区=区| 欧美一区日韩一区| 久久综合狠狠综合久久综青草 | 国产午夜一区二区三区| 久久不见久久见免费视频1| 久久免费视频在线观看| 在线成人欧美| 欧美精品aa| 亚洲制服少妇| 美女尤物久久精品| 亚洲巨乳在线| 国产伦理一区| 久久这里有精品视频 | 免费一级欧美片在线观看| 亚洲日本在线观看| 国产精品国产三级国产aⅴ入口 | 欧美.www| 亚洲午夜免费福利视频| 久久免费一区| 亚洲裸体视频| 国产日韩欧美视频| 欧美大片一区二区三区| 亚洲午夜高清视频| 欧美**人妖| 亚洲欧美日韩综合aⅴ视频| 国产综合色一区二区三区| 欧美日本在线看| 欧美自拍偷拍| 一区二区成人精品| 免费视频最近日韩| 午夜一区二区三区在线观看| 最新成人在线| 国产一区二区激情| 欧美天堂亚洲电影院在线观看| 久久精品三级| 亚洲永久免费视频| 亚洲精品国产系列| 免费中文字幕日韩欧美| 亚洲欧美综合精品久久成人| 亚洲人成网站777色婷婷| 国产乱子伦一区二区三区国色天香| 欧美成人日本| 久久精品国产亚洲aⅴ| 亚洲视屏一区| 亚洲美女视频在线免费观看| 麻豆精品视频在线| 欧美在线视频免费| 亚洲午夜精品久久久久久浪潮 | 中文日韩在线| 亚洲精品久久久久久久久久久久久| 国产日韩精品一区二区| 欧美视频一区二区三区四区| 欧美高清在线观看| 美日韩精品视频| 久久久久九九九| 性欧美1819sex性高清| 亚洲一区二区三区四区在线观看| 日韩视频在线播放| 亚洲黄网站在线观看| 欧美国产日韩xxxxx| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久精品人人做人人爽电影蜜月| 午夜欧美精品| 亚洲欧美日韩在线高清直播| 亚洲一区二区三区乱码aⅴ| 亚洲视频999| 亚洲性线免费观看视频成熟| 日韩小视频在线观看| 亚洲精品偷拍| a4yy欧美一区二区三区| 亚洲色无码播放| 亚洲永久免费观看| 亚洲视频在线二区| 午夜国产精品视频| 久久激情综合| 免费一区二区三区| 欧美高清你懂得| 亚洲精品美女| 中文一区在线| 欧美在线视频一区二区| 久久激情视频| 免费看黄裸体一级大秀欧美| 欧美激情第9页| 欧美亚男人的天堂| 国产午夜精品一区理论片飘花| 国产综合一区二区| 最近看过的日韩成人| 亚洲最新在线| 欧美一二三视频| 蜜臀av一级做a爰片久久| 亚洲国产视频a| 亚洲深夜福利| 久久久久综合网| 欧美日韩国产首页在线观看| 国产精品一区二区三区乱码| 黄色日韩网站视频| 亚洲精品一区二区在线观看| 亚洲尤物视频在线| 久久天堂成人| 亚洲美女中文字幕| 欧美在线黄色| 欧美人与性动交a欧美精品| 国产精品入口夜色视频大尺度| 狠狠爱成人网| 亚洲天堂免费观看| 久久亚洲国产精品一区二区| 亚洲日本成人| 久久国产一区二区| 欧美理论电影在线观看| 国产一区二区三区日韩| 99亚洲视频| 老司机免费视频久久| 夜夜躁日日躁狠狠久久88av| 久久久久久久波多野高潮日日| 欧美日韩一二三四五区| 影音先锋欧美精品| 亚洲欧美日韩系列| 亚洲国产美女| 久久久www| 国产精品日韩欧美一区二区| 亚洲精品久久久久久久久| 久久激情综合网| 亚洲最快最全在线视频| 男人的天堂亚洲| 国产一区二区毛片| 亚洲少妇自拍| 亚洲激情视频在线观看| 久久久久久亚洲精品杨幂换脸 | 亚洲午夜av电影| 欧美国产日韩一区二区在线观看 | 一本色道久久加勒比精品| 老鸭窝毛片一区二区三区| 亚洲先锋成人| 欧美日韩调教| 日韩午夜免费视频| 欧美大片在线看免费观看| 欧美亚洲日本国产| 国产精品伦一区| 亚洲素人在线| 99热这里只有精品8| 欧美人与性动交cc0o| 亚洲欧洲午夜| 亚洲国产高清在线| 免费久久精品视频| 亚洲高清不卡| 女女同性精品视频| 久热这里只精品99re8久| 激情视频一区二区| 久久精品一区| 欧美在线观看你懂的| 国产午夜精品一区二区三区视频 | 99国产精品99久久久久久| 欧美电影免费观看高清完整版| 精品动漫3d一区二区三区免费 | 欧美影院在线播放| 亚洲欧美日韩一区二区三区在线| 国产精品成人观看视频免费 | 国产精品久久久久免费a∨大胸| 99国产精品久久久久久久成人热 | 国产精品日韩久久久久| 午夜精品在线视频| 亚洲欧美日韩成人| 国模 一区 二区 三区| 久久―日本道色综合久久|