[Linux]GNU自动化工具(automake工具链)
Filename
:
[Linux]GNU
自动化工具(
automake
工具链)
Version
:
V1.0
Date
:
12/01/2009
Author
:
S.C.Leon <leonsc@126.com>
=====================================================================
GNU
自动化工具(
automake
工具链)
一、
Makefile
介绍
Makefile
是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,
Makefile
中纪录有文件的信息,在
make
时会决定在链接的时候需要重新编译哪些文件
Makefile
的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。
二、
GNU
自动化工具
Makefile
的基本结构不是很复杂,但当一个程序开发人员开始写
Makefile
时,经常会怀疑自己写的是否符合惯例,而且自己写的
Makefile
经常和自己的开发环境相关联,当系统环境变量或路径发生了变化后,
Makefile
可能还要跟着修改。这样就造成了手工书写
Makefile
的诸多问题。为辅助实现不同编译环境之间的源代码的可移植性,人们创造了
GNU
自动化工具(
autotools
),
autoconf
,
autoheader
,
libtools
,
automake
和其他许多脚本工具一起工作并共同构成了
GNU
编译系统。
使用
automake
,程序开发人员只需要写一些简单的含有预定义宏的文件,由
autoconf
根据一个宏文件生成
configure
,由
automake
根据另一个宏文件生成
Makefile.in
,再使用
configure
依据
Makefile.in
来生成一个符合惯例的
Makefile
。下面我们将详细介绍
Makefile
的
automake
生成方法。
二、使用的环境
本文所提到的程序是基于
Linux
发行版本:
Ubuntu 9.04
(
linux
主流发行版均可),它包含了我们要用到的
autoconf
,
automake
。
三、
helloworld
示例
从最常使用的例子程序
helloworld
开始。
由
helloworld.c
源文件通过
automake
工具链自动生成
Makefile
,最后生成可执行文件的简要步骤如下:
1
)新建三个文件:
helloworld.c
configure.in
Makefile.am
其中
configure.in
和
Makefile.am
是需要我们自己创建的。具体写法详见后文。
2)
然后执行:
aclocal;
autoconf;
automake --add-missing;
./config
相关文档:
到今日,在android平台上调试声音的方面终于有了进展,原来是需要改一个配置文件,目前只是解决了问题,具体原因以后再分析。硬件平台是6410+WM9714,软件平台是ANDROID。现在由于android系统启动时,加载音频服务不成功,处于一个死循环中,老停在登陆界面。此时打印的Logcat信息如下:
......
几乎每个linux驱动都有个module_init。没错,驱动的加载就靠它。先来分析一下module_init。定义如下:
#define module_init(x) __initcall(x); //include\linux\init.h
#define ......
什么是异步通讯?
就是通讯任意一方可以任意发送消息,有消息来到时会收到系统提示去接收消息。
这里要用到select函数。使用步骤如下:
1、设置一个集合变量,用来存放所有要判断的句柄(file descriptors:即我们建立的每个socket、用open打开的每个文件等)
2、把需要判断的句柄加入到集合里
3、设置判断时间
......