GNU Autoconf / Automake #1


Published on

GNU Autoconf / Automake工作坊(一)—使用Autoconf來build專案(上)
發表於:GNU Autoconf / Automake工作坊
時間:2012/7/28(六) 9:30-16:30
地點:台灣科大 國際大樓 IB712

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

GNU Autoconf / Automake #1

  1. 1. GNU Autoconf / Automake 工作坊使用 Autoconf 來 build 專案(上) 依瑪貓/楊士青<> 2012/7/28
  2. 2. 「使用 Autoconf 來 build 專案(上)」簡報由 依瑪貓╱楊士青 製作,以 創用CC Attribution-ShareAlike 3.0 Unported 授權條款 釋出。
  3. 3. 自我介紹• 依瑪貓╱楊士青• 2001 年起參與國內外自由軟體社群開發• SourceForge vsntp 等專案• 現為 Apache OpenOffice 開發團隊成員
  4. 4. Autoconf
  5. 5. 我們先來看看 Autoconf 到底是什麼?
  6. 6. 下載 autoconf% wget
  7. 7. 解壓縮 autoconf% tar xzf autoconf-2.69.tar.gz
  8. 8. 看看解壓縮出什麼東西% lsautoconf-2.69%
  9. 9. 只有一個「 autoconf-2.69 」資料夾
  10. 10. 進入資料夾中% cd autoconf-2.69
  11. 11. 再看看資料夾中有什麼東西% ls
  12. 12. 再看看資料夾中有什麼東西% lsaclocal.m4 ChangeLog.3 COPYINGv3 m4 NEWSAUTHORS ChangeLog configure doc READMEbin ChangeLog.0 GNUmakefile testsBUGS ChangeLog.1 COPYING INSTALL THANKSbuild-aux ChangeLog.2 COPYING.EXCEPTION lib man TODO%
  13. 13. Autoconf-2.69 資料夾中有• README• INSTALL• 只有一個可執行檔 configure
  14. 14. README
  15. 15. 讀一讀 README% cat README-*- text -*-AutoconfAutoconf is an extensible package of M4 macros that produce shellscripts to automatically configure software source code packages.These scripts can adapt the packages to many kinds of UNIX-likesystems without manual user intervention. Autoconf creates aconfiguration script for a package from a template file that lists theoperating system features that the package can use, in the form of M4macro calls.…%
  16. 16. 讀一讀 README 大意好像是:「 M4 巨集的套件,協助設定原始碼。」
  17. 17. INSTALL
  18. 18. 讀一讀 INSTALL% cat INSTALLInstallation Instructions… Briefly, the shell commands ./configure; make; make install shouldconfigure, build, and install this package. The followingmore-detailed instructions are generic; see the README file forinstructions specific to this package. Some packages provide thisINSTALL file but do not implement all of the features documentedbelow. The lack of an optional feature in a given package is notnecessarily a bug. More recommendations for GNU packages can be foundin *note Makefile Conventions: (standards)Makefile Conventions.…%
  19. 19. 讀一讀 INSTALL 所以只要./configure; make; make install 就可以了!?
  20. 20. 馬上來實作看看!
  21. 21. configure
  22. 22. 資料夾裏唯一的可執行檔。
  23. 23. 不管三七二十一,就給它跑跑看吧!
  24. 24. 執行 configure% ./configure
  25. 25. 執行 configure% ./configurechecking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /bin/mkdir -p…checking for expr... /usr/bin/exprchecking for GNU M4 that supports accurate traces... configure: error:no acceptable m4 could be found in $PATH.GNU M4 1.4.6 or later is required; 1.4.16 or newer is recommended.GNU M4 1.4.15 uses a buggy replacement strstr on some systems.Glibc 2.9 - 2.12 and GNU M4 1.4.11 - 1.4.15 have another strstr bug.%
  26. 26. 執行 configure錯誤:找不到 M4 。
  27. 27. 執行 configure• README 有提到, • Autoconf is an autoconf 是: extensible 「 M4 巨集的套件 package of M4 ,協助設定原始 macros that 碼。」 produce shell scripts to automatically configure software source code packages.
  28. 28. 先安裝 m4% sudo apt-get install m4
  29. 29. 再次執行 configure% ./configure…checking for GNU M4 that supports accurate traces... /usr/bin/m4…configure: creating ./config.statusconfig.status: creating tests/Makefileconfig.status: creating tests/atlocalconfig.status: creating man/Makefileconfig.status: creating lib/emacs/Makefileconfig.status: creating Makefileconfig.status: creating doc/Makefileconfig.status: creating lib/Makefileconfig.status: creating lib/Autom4te/Makefileconfig.status: creating lib/autoscan/Makefileconfig.status: creating lib/m4sugar/Makefileconfig.status: creating lib/autoconf/Makefileconfig.status: creating lib/autotest/Makefileconfig.status: creating bin/Makefileconfig.status: executing tests/atconfig commands%
  30. 30. 再次執行 configure• M4 成功檢查過了。• 還產生了一堆新的檔案。
  31. 31. configure 的功能• M4 成功檢查過了。 – 檢查系統是否有某些需要的功能。• 還產生了一堆新的檔案。
  32. 32. configure 的功能• M4 成功檢查過了。 – 檢查系統是否有某些需要的功能。• 還產生了一堆新的檔案。 – 依檢查結果,產生編譯需要的檔案。
  33. 33. configure 的功能 #1 檢查系統功能
  34. 34. configure 的功能 #1 檢查系統功能• 檢查系統有沒有程式需要的特定功能、函 式、函式庫等。
  35. 35. configure 的功能 #1 檢查系統功能• 檢查系統有沒有程式需要的特定功能、函 式、函式庫等。• 程式可以據此設定條件式編譯。
  36. 36. configure 的功能 #1 檢查系統功能• 檢查系統有沒有程式需要的特定功能、函 式、函式庫等。• 程式可以據此設定條件式編譯。
  37. 37. configure 的功能 #1 檢查系統功能• 檢查系統有沒有程式需要的特定功能、函 式、函式庫等。• 程式可以據此設定條件式編譯。 – 程式有用到 mysql ,可是系統不一定有安裝 mysql 。這時就可以用條件式編譯。在沒有 mysql 的系統上,取消掉 mysql 的支援。
  38. 38. 中場休息。歡迎提出問題。