安装:sudo yum install automake
使用:
1 运行autoscan生成两个文件:autoscan.log和configure.scan。将configure.scan重命名为configure.in。
修改configure.in文件:
(1) 将AC_INIT中的参数进行填充,如:AC_INIT(hello,1.0,605841200@qq.com)
(2) 在#Check for programs注释前增加AM_INIT_AUTOMAKE(packet-name,packet-version),如:AM_INIT_AUTOMAKE(hello,1.0)
(3) 修改AC_OUTPUT为AC_OUTPUT(Makefile)或新增加AC_CONFIG_FILES(Makefile)
2 运行aclocal生成aclocal.m4文件和autom4te.cache文件夹
3 运行autoconf生成configure
4 autoheader生成config.h.in文件
5 automake生成Makefile.in文件,需要手动创建Makefile.am后再执行automake --add-missing.
Makefile.am内容
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c
6 ./configure生成Makefile文件
7 make编译源程序,默认执行make all
8 ./hello看到程序的执行结果
9 make install可以把程序安装到系统目录中
10 make clean清除之前所编译的可执行文件及目标文件
11 make dist 将程序和相关文件打包为一个压缩文档以供发布,如hello-1.0.tar.gz
使用automake生成动态库
安装:sudo yum install libtool
使用环境:c++(src(main.c),fun(Fun.h Fun.c))
步骤:
1 在fun目录下新建Makefile.am,内容为
AUTOMAKE_OPTIONS=foreign
lib_LTLIBRARIES=libfun.la
libfun_la_SOURCES=Fun.h Fun.c
2 在src目录下新建Makefile.am,内容为
AUTOMAKE_OPTIONS=foreign
INCLUDES=-I../fun/
bin_PROGRAMS=main
main_SOURCES=main.c
main_LDADD=-L../fun -lfun
3 在c++目录下运行autoscan生成configure.scan,改名为configure.in并修改其内容
修改AC_INIT(main,1.0) AC_OUTPUT([Makefile])
增加AM_INIT_AUTOMAKE AC_PROG_LIBTOOL
4 运行aclocal
5 运行libtoolize -f -c
6 运行autoconf
7 运行autoheader
8 在c++目录下新建Makefile.am,内容为
AUTOMAKE_OPTIONS=foreign
SUBDIRS=fun src
9 运行automake -a 会在三个文件夹下均生成Makefile.in文件
10 在c++目录下运行./configure 生成Makefile文件
11 运行make,这时候在fun和src目录下就生成了相应的动态链接库和可执行程序了
使用automake生成静态库
使用环境同上
步骤同上。
差别:改变宏AC_PROG_RANLIB表明生成的是静态库AC_PROG_LIBTOOL表示生成的是动态库
修改src目录下的Makefile.am中的main_LDADD=../fun/libfun.a
修改fun目录下的Makefile.am内容为:
lib_LIBRARIES=libfun.a
libfun_a_SOURCES=Fun.h Fun.cpp
执行命令和顺序不变,不再执行libtoolize -f -c
原文地址:http://www.cnblogs.com/zxpo/p/3905153.html