GNU Autotools 初探 & share library 的蠢事
說GNU Autotools 可能很多人不清楚那是什麼?但是編譯提到編譯套件三部曲"./configure ; make ; make install",就很清楚了,這就是Autotools的功勞,它大大簡化了編譯程式的移植跟相容性問題,只要三個步驟就可以把軟體裝到你的Linux上,*nix系統特點就是家族衍生繁雜,因此也凸顯出Autotools之於GNU / Linux 的重要性。 前情提要說完了,再來一點心得感想,其實一直覺得編譯套件三部曲"./configure ; make ; make install"很神奇,想知道後面的動作,如何能精確的檢查編譯需要的函式庫跟相依性,再進一步就是如何把自己的軟體改成一樣的形式,讓它們可以在各系統暢行無阻,這次因為buildroot強烈要求外掛軟體要遵循Autotools的規範,就開始這次的研究。 廢話交代完畢,進入實做細節,首先是整個Autotools的流程圖:(取自 http://en.wikipedia.org/wiki/GNU_build_syste m) 圖中的橢圓形指的是處理的程式,長方形就是相關的資料檔。 Step by Step教學可以在這裡找到; http://markuskimius.wikidot.com/programming:tut:autotools/ 按著步驟一步一步大概就知道要怎麼進行了,基本上要準備的就是configure.ac跟Makefile.am,前者可以由autoscan產生,後者就要自己寫了,但是configure.ac不是拿到就可以用的,autoscan產生的檔名是configure.scan,要自己手動更名為configure.ac,再來要小小修改一下內容,才能繼續後面的步驟,必須要加入的兩行是: AM_INIT_AUTOMAKE(httpfs2, 1.0) AM_PROG_CC_C_O 另外,一個完整的GNU套件需要有一些相關的文件,就是我們拿到套件會包含在內的NEWS、README、AUTHORS、ChangeLog等,上述四個檔案需要自己準備,可以用touch創造空檔案騙過檢查即可,其他的可以透過"automake --add-missing"自動補齊 再來談到Makefi