gnuautotools简介.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
gnuautotools简介

GNU AutoTools简介 Automake, Autoconf and Libtool 黄 颂 2004-10-09 GNU Package的典型安装 FAQ 0039 @ smth 下载源代码包foo-1.0.tar.gz tar xvzf foo-1.0.tar.gz cd foo-1.0 ./configure make (su) make install 问题1:配置脚本configure是怎么生成的? 问题2:configure脚本怎么知道该如何生成Makefile 幕后英雄棗 GNU Auto Tools: autoconf, automake, libtool, autoscan, autoheader厖 Makefile抯 way to develop 三元组(Target, Dependency, Command) Target : Dep1 Dep2 TABCmd1 TABCmd2 [Blank Line] .s1 .s2 : TABCmd1 $(var), $, $@ 厖 Makefile抯 Big Trouble? GNU的Makefile规范相当复杂,随着项目复杂性的增加,要写出一个正确而高效的Makefile相当困难,对新手而言更是如此。 越是复杂的软件越有可能有自己独特的build方法,怎么办?每次都重新学习?! 不同的类Unix操作系统之间存在着差异,移植性如何保证?需要大量手工编写的脚本和条件编译。 All in One Solution? GNU Auto Tools是上个世纪90年代开始发展起来的一系列辅助开发、打安装包的自动化工具。 各种工具分别开发,但是协同工作的很好。比如autoconf, automake, libtool等等。 但是,连开发者自己也承认,这套工具虽然好用,但是学习曲线很陡峭。 困难在于:一套新的思路和习惯,一套自定义的宏和规则,使用者的交流J Hello World ?Step by Step 1. hello.c #include stdio.h int main() { printf(揌ello World!\n?; return 0; } 2. Makefile.am bin_PROGRAMS = hello hello_SOURCES = hello.c 3. configure.in AC_INIT(hello.c) AM_INIT_AUTOMAKE(hello, 0.1) AC_PROG_CC AC_OUTPUT(Makefile) 4. aclocal 5. autoconf 6. automake --add-missing --foreign 7. ./configure 8. make (make install 安装,make dist 产生安装包) Hello World! 演示 棗如何杀鸡用牛刀 来龙去脉 autoscan configure.scan configure.in Makefile.am Makefile.in Makefile automake edit aclocal.m4 aclocal configure autoconf configure.in(1) 是configure脚本的输入文件,为了解决在不同unix变种之间移植程序的问题:库名可能不同,应用程序名可能不同,结构和常量的定义可能不同厖 configure脚本完成autoconf与automake的初始化工作,为不同的平台定义相应的宏,检测并指定适当的程序名、库名、结构和常量名等等,指定要为哪些目录输出Makefile文件。总之,为编译程序做好一切准备工作。 configure.in(2) configure.in的八股文 基本初始化部分:包括AC_INIT (必须第一个出现), AM_INIT_AUTOMAKE(程序包名,版本号), AC_CONFIG_HEADER 可选宏:如AC_ARG_ENABLE 检测某些程序的存在性 检查程序用到的库 configure.in(3) 检查某些头文件是否存在。 检查Typedefs and structures。 检查Functions。 指定在哪些目录输出Makefile。 Seems troublesome, mmm? Don抰 worry, autoscan will do most of the work for you. Makefile.am(1) 一种比Makefile更高层次的规则。只指定要生成什么目标,它由什么源文件生成,要安装到什么目录。 Just simple and stupid! J

文档评论(0)

wangsux + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档