- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
autotools入门
autotools 入门
授人于鱼不如授人于渔
推荐阅读:
autobook
autoconf手册
automake手册
基本上到这儿,就该结束了。剩下的
就不保证绝对正确了。
autotools的作用:
1. 使代码可移植
代码可移植不是自动的,代码自身必须保证其在任意平台可以运行。autotools只是
告诉,这个平台什么可以用,什么不可以用。
2. 使安装分发很容易
# ./configure
# make
# make install
这个最初是gnu的规范,后来变成了开源的规范。
3. 看起来很专业的样子
专业,至少从看起来专业开始。但是切记,估计只有跑在虚拟机上的代码(例如
perl),和精通各个平台的人,才能写出真正可移植的代码。
我对可移植的理解:
作为公司内部项目,不必追求可移植,在linux平台运行,(只要能)就应该榨干
linux提供的每一份特性。
# info autoreconf
`autoreconf runs `autoconf, `autoheader,
`aclocal, `automake,`libtoolize, and `autopoint
(when appropriate) repeatedly to update the GNU
Build System in the specified directories and their
subdirectories (*note Subdirectories::). By default,
it only remakes those files that are older than their
sources.
autotools 通常说的是autoconf,automake,
autolib,但是还有很多辅助的工具,包括
autoheader,aclocal,autoscan。
这些工具的关系:
autoconf 根据configure.in(configure.ac)生成configure。
automake 根据 Makefile.am 生成Makefile.in。
autotools 是解决各个平台对.a,.so 的处理不一致的,我不懂这个,今天就不说
了。
这些都是开发者要做的。
使用者运行 ./configure 时发生的事情:
configure 检测平台特性,生成config.h,config.h 定义了很多宏,这些宏标识了平
台特性,例如:#define HAVE_MEMSET 1;说明该平台提供了memset函数;根据
Makefile.in,生成相应平台的Makefile,不同的平台,Makefile规则不同。
上面所的平台特性,其实不准确,准确的说法是,检查特性。configure不会检查这个
系统是Linux还是FreeBSD,它只检查某个函数是否得到支持。
注意:autoconf 并不依赖automake,NB的开发者可以手动写Makefile.in,例如apache
就没有Makefile.am;configure 只是一个普通的脚本,NB的开发者可以手动写
configure(只要它能完成上述功能),例如nginx的作者。
作为不NB的开发者,我们要完成configure.in文件和Makefile.am文件的编写。下面
主要讲解着两个文件。
目录结构如下:
0 ls
aclocal.m4 config.h.in configure.in jobqueue.cpp Makefile.am mysqlqueue.cpp
config configure jobclient.pl lib Makefile.in mysqlqueue.hpp
0 ls ./lib
conffile.cpp conffile.hpp gc.hpp Makefile.am Makefile.in pidfile.hpp
主程序文件在顶层目录,子目录lib下存放库文件。
可以看到configure.in 文件, Makefile.am Makefile.in文件,lib/Makefile.am,l
原创力文档


文档评论(0)