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

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

makefile 使用make更新函數庫文件

Posted on 2009-06-01 14:14 Prayer 閱讀(329) 評論(0)  編輯 收藏 引用 所屬分類: C/C++LINUX/UNIX/AIX
函數庫文件也就是對Object文件(程序編譯的中間文件)的打包文件。在Unix下,一般是由命令"ar"來完成打包工作。

一、函數庫文件的成員

一個函數庫文件由多個文件組成。你可以以如下格式指定函數庫文件及其組成:

    archive(member)

這個不是一個命令,而一個目標和依賴的定義。一般來說,這種用法基本上就是為了"ar"命令來服務的。如:

    foolib(hack.o) : hack.o
            ar cr foolib hack.o

如果要指定多個member,那就以空格分開,如:

    foolib(hack.o kludge.o)

其等價于:

    foolib(hack.o) foolib(kludge.o)

你還可以使用Shell的文件通配符來定義,如:

    foolib(*.o)


二、函數庫成員的隱含規則

當make搜索一個目標的隱含規則時,一個特殊的特性是,如果這個目標是"a(m)"形式的,其會把目標變成"(m)"。于是,如果我們的成員是"%.o"的模式定義,并且如果我們使用"make foo.a(bar.o)"的形式調用Makefile時,隱含規則會去找"bar.o"的規則,如果沒有定義bar.o的規則,那么內建隱含規則生效,make會去找bar.c文件來生成bar.o,如果找得到的話,make執行的命令大致如下:

    cc -c bar.c -o bar.o
    ar r foo.a bar.o
    rm -f bar.o

還有一個變量要注意的是"$%",這是專屬函數庫文件的自動化變量,有關其說明請參見"自動化變量"一節。


三、函數庫文件的后綴規則

你可以使用"后綴規則"和"隱含規則"來生成函數庫打包文件,如:

    .c.a:
            $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
            $(AR) r $@ $*.o
            $(RM) $*.o

其等效于:

    (%.o) : %.c
            $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
            $(AR) r $@ $*.o
            $(RM) $*.o


四、注意事項

在進行函數庫打包文件生成時,請小心使用make的并行機制("-j"參數)。如果多個ar命令在同一時間運行在同一個函數庫打包文件上,就很有可以損壞這個函數庫文件。所以,在make未來的版本中,應該提供一種機制來避免并行操作發生在函數打包文件上。

但就目前而言,你還是應該不要盡量不要使用"-j"參數。

 

后序
——

終于到寫結束語的時候了,以上基本上就是GNU make的Makefile的所有細節了。其它的產商的make基本上也就是這樣的,無論什么樣的make,都是以文件的依賴性為基礎的,其基本是都是遵循一個標準的。這篇文檔中80%的技術細節都適用于任何的make,我猜測"函數"那一章的內容可能不是其它make所支持的,而隱含規則方面,我想不同的make會有不同的實現,我沒有精力來查看GNU的make和VC的nmake、BCB的make,或是別的UNIX下的make有些什么樣的差別,一是時間精力不夠,二是因為我基本上都是在Unix下使用make,以前在SCO Unix和IBM的AIX,現在在Linux、Solaris、HP-UX、AIX和Alpha下使用,Linux和Solaris下更多一點。不過,我可以肯定的是,在Unix下的make,無論是哪種平臺,幾乎都使用了Richard Stallman開發的make和cc/gcc的編譯器,而且,基本上都是GNU的make(公司里所有的UNIX機器上都被裝上了GNU的東西,所以,使用GNU的程序也就多了一些)。GNU的東西還是很不錯的,特別是使用得深了以后,越來越覺得GNU的軟件的強大,也越來越覺得GNU的在操作系統中(主要是Unix,甚至Windows)"殺傷力"。

對于上述所有的make的細節,我們不但可以利用make這個工具來編譯我們的程序,還可以利用make來完成其它的工作,因為規則中的命令可以是任何Shell之下的命令,所以,在Unix下,你不一定只是使用程序語言的編譯器,你還可以在Makefile中書寫其它的命令,如:tar、awk、mail、sed、cvs、compress、ls、rm、yacc、rpm、ftp……等等,等等,來完成諸如"程序打包"、"程序備份"、"制作程序安裝包"、"提交代碼"、"使用程序模板"、"合并文件"等等五花八門的功能,文件操作,文件管理,編程開發設計,或是其它一些異想天開的東西。比如,以前在書寫銀行交易程序時,由于銀行的交易程序基本一樣,就見到有人書寫了一些交易的通用程序模板,在該模板中把一些網絡通訊、數據庫操作的、業務操作共性的東西寫在一個文件中,在這些文件中用些諸如"@@@N、###N"奇怪字串標注一些位置,然后書寫交易時,只需按照一種特定的規則書寫特定的處理,最后在make時,使用awk和sed,把模板中的"@@@N、###N"等字串替代成特定的程序,形成C文件,然后再編譯。這個動作很像數據庫的"擴展C"語言(即在C語言中用"EXEC SQL"的樣子執行SQL語句,在用cc/gcc編譯之前,需要使用"擴展C"的翻譯程序,如cpre,把其翻譯成標準C)。如果你在使用make時有一些更為絕妙的方法,請記得告訴我啊。

回頭看看整篇文檔,不覺記起幾年前剛剛開始在Unix下做開發的時候,有人問我會不會寫Makefile時,我兩眼發直,根本不知道在說什么。一開始看到別人在vi中寫完程序后輸入"!make"時,還以為是vi的功能,后來才知道有一個Makefile在作怪,于是上網查啊查,那時又不愿意看英文,發現就根本沒有中文的文檔介紹Makefile,只得看別人寫的Makefile,自己瞎碰瞎搞才積累了一點知識,但在很多地方完全是知其然不知所以然。后來開始從事UNIX下產品軟件的開發,看到一個400人年,近200萬行代碼的大工程,發現要編譯這樣一個龐然大物,如果沒有Makefile,那會是多么恐怖的一樣事啊。于是橫下心來,狠命地讀了一堆英文文檔,才覺得對其掌握了。但發現目前網上對Makefile介紹的文章還是少得那么的可憐,所以想寫這樣一篇文章,共享給大家,希望能對各位有所幫助。

現在我終于寫完了,看了看文件的創建時間,這篇技術文檔也寫了兩個多月了。發現,自己知道是一回事,要寫下來,跟別人講述又是另外一回事,而且,現在越來越沒有時間專研技術細節,所以在寫作時,發現在闡述一些細節問題時很難做到嚴謹和精練,而且對先講什么后講什么不是很清楚,所以,還是參考了一些國外站點上的資料和題綱,以及一些技術書籍的語言風格,才得以完成。整篇文檔的提綱是基于GNU的Makefile技術手冊的提綱來書寫的,并結合了自己的工作經驗,以及自己的學習歷程。因為從來沒有寫過這么長,這么細的文檔,所以一定會有很多地方存在表達問題,語言歧義或是錯誤。因些,我迫切地得等待各位給我指證和建議,以及任何的反饋。

最后,還是利用這個后序,介紹一下自己。我目前從事于所有Unix平臺下的軟件研發,主要是做分布式計算/網格計算方面的系統產品軟件,并且我對于下一代的計算機革命——網格計算非常地感興趣,對于分布式計算、P2P、Web Service、J2EE技術方向也很感興趣,同時,對于項目實施、團隊管理、項目管理也小有心得,希望同樣和我戰斗在“技術和管理并重”的陣線上的年輕一代,能夠和我多多地交流。我的MSN是:haoel@hotmail.com(常用),QQ是:753640(不常用)。(注:請勿給我MSN的郵箱發信,由于hotmail的垃圾郵件導致我拒收這個郵箱的所有來信)

我歡迎任何形式的交流,無論是討論技術還是管理,或是其它海闊天空的東西。除了政治和娛樂新聞我不關心,其它只要積極向上的東西我都歡迎!

最最后,我還想介紹一下make程序的設計開發者。

 

首當其沖的是: Richard Stallman  

開源軟件的領袖和先驅,從來沒有領過一天工資,從來沒有使用過Windows操作系統。對于他的事跡和他的軟件以及他的思想,我無需說過多的話,相信大家對這個人并不比我陌生,這是他的主頁:http://www.stallman.org/ 。這里只貼上一張他的近照:







 gunguymadman 回復于:2004-09-16 12:27:15

第二位是:Roland McGrath  

個人主頁是:http://www.frob.com/~roland/ ,下面是他的一些事跡:

1)  合作編寫了并維護GNU make。

2)  和Thomas Bushnell一同編寫了GNU Hurd。

3)  編寫并維護著GNU C library。 

4)  合作編寫并維護著部分的GNU Emacs。 

 

在此,向這兩位開源項目的斗士致以最真切的敬意。


(全文完)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            日韩视频一区二区三区在线播放| 久久综合亚州| 欧美夫妇交换俱乐部在线观看| 欧美gay视频激情| 亚洲高清视频在线观看| 欧美日韩亚洲国产精品| 亚洲一区亚洲| 午夜在线精品偷拍| 麻豆免费精品视频| 欧美日韩a区| 国产亚洲观看| 91久久综合亚洲鲁鲁五月天| 妖精视频成人观看www| 亚洲欧美日韩一区在线| 久久婷婷丁香| 一区二区三区高清在线| 久久久久国产精品厨房| 欧美午夜精品伦理| 激情综合在线| 亚洲宅男天堂在线观看无病毒| 久久噜噜噜精品国产亚洲综合| 亚洲国产精品热久久| 亚洲国产精品第一区二区三区| 99国产精品一区| 久久久之久亚州精品露出| 欧美午夜视频在线| 亚洲人在线视频| 久久久久久伊人| 亚洲午夜久久久久久久久电影网| 久久综合色婷婷| 国产一区清纯| 欧美亚洲一级| 亚洲日本va在线观看| 久久久欧美精品sm网站| 国产亚洲精品资源在线26u| aⅴ色国产欧美| 欧美激情精品久久久久久蜜臀| 亚洲欧美日韩电影| 国产精品va在线播放我和闺蜜| 亚洲人午夜精品免费| 免费观看国产成人| 久久精品男女| 国产欧美不卡| 亚洲主播在线播放| 9人人澡人人爽人人精品| 欧美国产激情| 亚洲人成亚洲人成在线观看| 欧美成年人网站| 久久gogo国模啪啪人体图| 国产精品免费视频观看| 亚洲一区二区在线播放| 日韩一区二区免费高清| 欧美日韩免费高清一区色橹橹| 亚洲国产一区二区在线| 你懂的一区二区| 久久久国产精品一区| 黑人极品videos精品欧美裸| 久久久久国产一区二区三区四区| 欧美亚洲免费电影| 精品成人乱色一区二区| 亚洲三级性片| 亚洲高清av在线| 美女成人午夜| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美大片免费看| 欧美成人免费视频| 一本大道久久a久久精品综合 | 玖玖玖国产精品| 伊人一区二区三区久久精品| 另类专区欧美制服同性| 久久久蜜桃精品| 最近中文字幕日韩精品| 亚洲精品社区| 国产精品一区二区久久久| 久久激情视频| 老司机午夜精品| 中日韩美女免费视频网站在线观看| 亚洲午夜av在线| 狠狠色狠狠色综合日日五| 亚洲电影免费| 国产精品国产馆在线真实露脸| 久久久国产精彩视频美女艺术照福利| 久久久久9999亚洲精品| 一区二区三欧美| 香蕉乱码成人久久天堂爱免费| 激情五月***国产精品| 亚洲黑丝在线| 国产欧美日韩视频| 亚洲第一精品电影| 国产精品一区二区在线观看| 欧美大尺度在线| 国产精品女人毛片| 亚洲第一视频| 国产一区二区三区精品欧美日韩一区二区三区| 欧美成黄导航| 国产一级一区二区| 亚洲最新色图| 亚洲三级影片| 久久精品二区| 午夜精品久久久| 欧美国产一区视频在线观看| 午夜宅男久久久| 欧美激情影院| 久热国产精品视频| 国产精品日韩精品欧美在线| 欧美激情在线| 精品二区视频| 性欧美在线看片a免费观看| 亚洲视频高清| 欧美人与性动交α欧美精品济南到 | 你懂的视频一区二区| 欧美有码视频| 欧美日韩一区二区国产| 欧美激情一区二区三区| 国产精自产拍久久久久久| 亚洲另类自拍| 99视频精品| 蜜桃av噜噜一区二区三区| 久久不射网站| 在线成人免费视频| 亚洲午夜性刺激影院| 久久综合久久综合九色| 亚洲欧美日韩国产一区二区三区| 欧美高清一区| 欧美国产激情二区三区| 红桃视频成人| 久久久久久穴| 蜜臀久久99精品久久久久久9| 黑人一区二区三区四区五区| 亚洲欧美日韩爽爽影院| 亚洲永久精品国产| 欧美系列电影免费观看| 一本久久a久久精品亚洲| 宅男在线国产精品| 欧美午夜宅男影院| 亚洲欧美电影院| 久久久999精品| 精品99一区二区三区| 久久久久这里只有精品| 欧美成人影音| 亚洲免费黄色| 国产精品久久7| 亚洲综合国产| 久久久久久九九九九| 一区二区在线看| 久久夜色精品国产欧美乱| 欧美激情影音先锋| 亚洲午夜久久久| 国产免费一区二区三区香蕉精| 午夜精品视频网站| 免费av成人在线| 亚洲美女色禁图| 国产精品毛片| 久久久久久精| 亚洲免费成人av电影| 午夜欧美大尺度福利影院在线看| 国产精品一二三四区| 久久国产一二区| 亚洲国产成人在线播放| 亚洲一区二区三区四区五区黄| 国产精品色在线| 久久蜜桃av一区精品变态类天堂| 欧美aⅴ99久久黑人专区| 一区二区欧美国产| 国产一区二区高清不卡| 欧美大片免费看| 亚洲欧美国产制服动漫| 欧美丰满高潮xxxx喷水动漫| 亚洲无人区一区| 一区二区三区在线免费视频| 欧美人与禽猛交乱配视频| 欧美一区二区在线观看| 亚洲日本成人女熟在线观看| 欧美专区在线观看一区| 亚洲毛片在线观看| 国产婷婷成人久久av免费高清 | 亚洲肉体裸体xxxx137| 国产精品稀缺呦系列在线| 久热精品视频在线观看| 亚洲欧美变态国产另类| 亚洲精品国久久99热| 久久久久久香蕉网| 亚洲图片在线| 亚洲国产另类久久久精品极度| 国产精品一区免费在线观看| 欧美日韩国产首页| 免费观看日韩av| 久久精品国产综合精品| 久久精品亚洲精品国产欧美kt∨| 91久久久精品| 欧美中文字幕| 亚洲图片在线观看| 欧美激情亚洲精品| 久久xxxx精品视频| 亚洲先锋成人| 亚洲伦理在线| 亚洲二区在线视频| 久久一本综合频道| 久久国产日韩欧美| 欧美一区二区久久久|