autoconf,automake,libtool


(1)autoscan, automake, autoconf 之間的協作關係

wKiom1g74xbw-JBYAABS-IF0_dc037.gifspacer.gif


(2)libtool

o: 編譯的目標文件

a: 靜態庫,其實就是把若干o文件打了個包

so: 動態鏈接庫(共享庫)


lo: 使用libtool編譯出的目標文件,其實就是在.o文件中添加了一些信息。

la: 使用libtool編譯出的庫文件,其實是個文本文件,記錄同名動態庫和靜態庫的相關信息和依賴關係。該文件中的dependency_libs變量記錄該庫依賴的所有庫(可以是so、a、la文件);libdir變量爲庫的安裝位置;library_names變量爲共享庫的名字;old_library變量爲靜態庫的名字。


libtool主要的一個作用是在編譯大型軟件的過程中解決了庫的依賴問題;將繁重的庫依賴關係的維護工作承擔下來,從而釋放了程序員的人力資源。通常libtool是配合GNU autoconf和automake一起使用。libtoo安裝l依賴於Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Grep, Make, Sed。libtool提供統一的接口,通過libtool可以編譯生成lo、la文件;可以編譯連接構建出庫和執行程序。libtool通過la文件中記錄的依賴關係自動進行整理出正確的編譯命令串,再調用C++編譯器進行編譯連接。就是一個解析la文件--> 整理依賴關係 ---> 調用子進程C編譯器的過程



(3)疑問

執行autoconf遇到 possibly undefined macro: AM_INIT_AUTOMAKE

嘗試運行: autoreconf --install


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