在线笔记
全部博文(596)
分类: 项目管理
2013-01-22 15:17:16
GNU Automake是Linux环境下常用的开发工具,可以产生供make使用的Makefile,省却了开发人员编写Makefile的繁琐事情。
Automake搭建工程的一般流程,如下图所示:椭圆或圆形代表动作,长方形代表数据
上图的流程比较繁琐,GNU提供了一个工具Autoreconf,将automake,autoconf等调用顺序隐藏起来,可以更便利的生成工程。流程图如下所示
流程图解析:
1. $autoscan,对源码进行扫描,生成configure.scan,并修改为configure.ac
2. 准备Makefile.am
3. $autoreconf –install生成config.h,Makefile
4. $make编译工程
这个例子是生成一个动态库libmymath.so,供主程序test调用。
总共是1个目录,9个文件。
1. $autoscan
2. $mv configure.scan configure.ac
3. $vi configure.ac
修改AC_INIT([test], [1.0], BUG-REPORT-ADDRESS)
增加AM_INIT_AUTOMAKE,初始化automake
增加AC_PROG_LIBTOOL,支持库文件
4. $autoreconf --install
5. $./configure
6. $make
SUBDIRS=src
#指定生成的二进制的名字
bin_PROGRAMS=test
#test依赖的C文件
test_SOURCES=main.c \
usage.c
#test依赖的库文件
test_LDADD=libmymath.la
include_HEADERS=del.h \
add.h
#生成的共享库libmymath.so
lib_LTLIBRARIES=libmymath.la
#共享库的依赖文件
libmymath_la_SOURCES=add.c \
del.c
#include
#include "add.h"
#include "del.h"
#include "usage.h"
int main(char *argv[], int argc)
{
if (argc > 1)
{
usage();
return -1;
}
int a = 1;
int b = -1;
int c;
c = add(a, b);
printf("c = %d\n", c);
c = del(a, b);
printf("c = %d\n", c);
return 0;
}
int add(int a, int b)
{
return a+b;
}
int add(int a, int b);
int del(int a, int b)
{
return a-b;
}
int del(int a, int b);
void usage(void)
{
printf("usage: ./bin");
}
void usage(void);