學習autotools後的回憶

轉載時請註明出處和作者聯繫方式
文章出處:
http://blog.csdn.net/jack0106 
作者聯繫方式:馮牮 
[email protected]

 

在linux下工作已經3年多了,對於工程管理工具的使用,也是經歷了從簡到繁的好幾個階段。

 

一 手動編寫Makefile階段

 

這是最初級的階段,通常也是學習嵌入式linux開發時,最先需要學會使用的工具之一。這個階段,有兩大塊內容需要學習,首先是要明白gcc是怎麼回事,然後是要了解makefile的一些基本概念和用法。說實話,這個階段,我對gcc和makefile,其實也只是一些類似於死記硬背試的表面理解。對linux項目工程的認識,也很淺陋,一般認爲一個項目,就是最終會編譯成一個可執行文件。

 

我工作後的第一個項目,是mips平臺上的一個後臺程序,makefile就是純手工編輯的,比較簡單,不到100行,僅僅是完成了編譯工作,除了gcc,沒有調用到其他的工具。在部署的時候,是把交叉編譯出來的唯一的一個可執行文件手動拷貝到開發板的/usr/bin目錄中。

 

二 初次接觸qt

 

我的第二個項目,是arm上的qt程序。在qt中,引入了qmake作爲工程管理工具,qmake的作用,其實就是簡化makefile的編寫。這個階段,我對makefile的認知,本質上並沒有提高,之前對gcc和makefile,用的是死記硬背,這時對於qmake的認識,同樣是類似於死記硬背。這個項目的makefile,主要完成的仍然是編譯工作。項目本身的依賴關係並不複雜,所以在部署的時候,同樣是手動複製。

 

三 上手moblin

 

前面做的兩個項目,都屬於嵌入式平臺上的“專用型”程序,是傳統意義上的嵌入式程序,和gnome這種桌面環境差別很大。到了第三個項目,開始使用moblin平臺,這是一種通用型的平臺,已經預裝了很多底層的庫,程序之間的依賴關係,也變得複雜起來,在這個上面開發程序,更像是傳統的桌面環境編程。在熟悉平臺的過程中,“迫不得已”需要對gcc和makefile做更深入的學習。在這一輪學習中,對gcc的工作方式有了一些更深入的理解,總結出來就是對幾個最常用參數的理解,包括 -I,-L,-l,再加上一個-Wl,-rpath,參數。我在招人的時候,也很喜歡就這幾個參數的使用出一些題,百試不爽。

 

此時的代碼,由於項目歷史原因,仍然是純手工編輯的makefile,但是已經感覺到它的不足了,尤其是在部署的時候,最麻煩。比如桌面快捷方式,就得手動編寫,不能在make時正確自動生成,再比如dbus服務程序的自啓動文件,也是手動編輯,然後拷貝到對應的目錄。

 

四 升級到meego

 

升級到meego平臺,上層開發使用的工具,又回到了qt。經歷了之前的使用和學習,對linux環境已經很熟悉了,對程序的運行和部署,也有了更詳實的體會。這個時候的代碼,使用qmake進行管理,編譯,安裝,打包,一應俱全。

 

五 學習autotools

 

在我的第一個階段,其實就學習過autotools,但是其實也只是瞭解了它的形,並不理解它的神,而且由於autotools比較複雜,項目中也一直沒有真正的使用過。直到現在,才又重新學習了一邊autotools的使用,並且使用autotools對moblin時代的一個項目進行了改造。

 

六 總結

 

從功能上看,autotools和qmake,都已經相當的完善了,只不過他們有各自的使用場合,qmake主要還是針對基於qt的程序,而autotools的適用面更廣(它的難度也是最大的)。要學習autotools,網上有教程,可以看看,但是最好還是找一些實際的項目代碼,看看別人是怎樣使用autotools的(網上的教程,通常都是構造一個hello world型的例子,過於簡單,學習效果不一定好)。另外,autotools的理念,也跟個人的linux使用經驗有關,當對linux系統有了比較深的感受之後,再來學習autotools,可能效果會更好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章