automake/autoconf工程管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/KEYTOME/article/details/6103608

目录结构

最顶层目录名用模块名称,这里是test

源文件放在模块下的src子目录里,这里是test/src

 

创建源文件

在src下创建test.c

 

 

 

创建Makefile模板

创建test/Makefile.am,内容如下:

SUBDIR=src

表示其下有一个src子目录,若有多个子目录,用空格分开

创建test/src/Makefile.am,内容如下:

bin_PROGRAMS=test

test_SOURCES=test.c

 

am扩展名是automake的简称,它是 automake用来产生Makefile.in文件的模板。

 

创建autoconf的模板

在test里运行sudo autoscan,生成文件autoscan.log和configure.scan,将configure.scan重命名为configure.in:

sudo mv configure.scan configure.in

打开configrure.in并作修改:

 

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.65])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([src/test.c])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile
                 src/Makefile])
AC_OUTPUT

 

修改成:

 

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.65])
AC_INIT(test, 0.1, xxx@xxx.com)
AC_CONFIG_SRCDIR([src/test.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE(test, 0.1)
# Checks for programs.
AC_PROG_CC

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile
                 src/Makefile])
AC_OUTPUT

 

复制所用到的宏

sudo aclocal

生成aclocal.m4文件和autom4te.cache文件夹

 

生成配置头文件的模板

sudo autoheader

生成config.h.in文件

 

创建几个必要的文件

README

NEWS

AUTHORS

ChangeLog


生成Makefile.in和所需要的脚本

sudo automake -a

 

生成configure脚本

sudo autoconf

autoconf调用m4(即macro)展开configure.in中的宏,生成configure脚本。

 

生成最终的Makefile

sudo ./configure

configure有以下两个常用的参数:

--prefix用来指定安装目录,Linux下默认的安装目录是/usr/local

--host用于交叉编译,比如x86的PC机上编译在ARM板上运行的程序

如:sudo ./configure --host=arm-linux

 

编译

sudo make

 

安装

sudo make install

 

发布软件包

sudo make dist或sudo make distcheck

生成test-0.1.tar.gz软件包

 

阅读更多
想对作者说点什么? 我来说一句
相关热词

没有更多推荐了,返回首页

关闭
关闭
关闭