linux使用autoconf和automake生成configure

引子

无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。

但是如果通过查阅make的帮助文档来手工编写Makefile,对任何程序员都是一场挑战。幸而有GNU 提供的Autoconf及Automake这两套工具使得编写makefile不再是一个难题。

本文将介绍如何利用 GNU Autoconf 及 Automake 这两套工具来协助我们自动产生 Makefile文件,并且让开发出来的软件可以像大多数源码包那样,只需"./configure", "make","make install" 就可以把程序安装到系统中。

一、环境

Ubuntu14.04 LTS,安装automake ,sudo apt-get install automake

二、流程

来一张从网络上摘录的图片,看看大致的流程

三、实践

1、新建一个目录:xpcdetector,在xpcdetector目录中新建一个子目录:XPCDatabase、XPCNetwork,以及XPCDetector,其中前两个是动态库,XPCDetector则是可执行程序。

2、cd xpcdetector

3、执行命令:autoscan

4、将生成文件中的configure.scan改名为configure.ac,并修改文件内容:

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

AC_PREREQ([2.69])
AC_INIT(etector, 1.0.0, [email protected])
AC_CONFIG_SRCDIR([MacchinaDaemon/main.cpp])
AC_CONFIG_HEADERS([config.h])

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC

# Checks for libraries.
LT_INIT

# Checks for header files.
AC_CHECK_HEADERS([inttypes.h limits.h stdint.h stdlib.h string.h sys/param.h sys/time.h syslog.h unistd.h opencv/cv.h SDL.h SDL_thread.h libavformat/avformat.h Poco/Logger.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_CHECK_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_INT16_T
AC_TYPE_INT64_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T

AM_INIT_AUTOMAKE([foreign])

# Checks for library functions.
AC_FUNC_ERROR_AT_LINE
AC_FUNC_FORK
AC_CHECK_FUNCS([memset rint sqrt strchr strerror strstr strtol])

AC_CONFIG_FILES([Makefile
XPCDatabase/Makefile XPCNetwork/Makefile XPCDetector/Makefile XPCDaemon/Makefile XPCWatchdog/Makefile XPCWatchdogDaemon/Makefile MacchinaDaemon/Makefile])

AC_OUTPUT

5、在xpcdetector目录新建一个Makefile.am文件,并写入如下内容:

AUTOMAKE_OPTIONS = foreign

SUBDIRS = XPCDatabase XPCNetwork XPCDetector XPCDaemon XPCWatchdog XPCWatchdogDaemon MacchinaDaemon

其实就是定义一下子目录

6、在XPCDatabase、XPCNetwork,以及XPCDetector目录下分别新建一个Makefile.am文件,例如XPCDatabase目录下的Makefile.am的内容如下:

AUTOMAKE_OPTIONS = foreign

lib_LTLIBRARIES = libXPCDatabase.la

libXPCDatabase_la_SOURCES = DetectorSt.cpp DetectorSt.h DetectorTable.cpp DetectorTable.h

#include_HEADERS = DetectorSt.h DetectorTable.h

DEFS += -D_GNU_SOURCE

libXPCDatabase_la_LDFLAGS = -D_GNU_SOURCE -shared –fPIC

libXPCDatabase_la_LIBADD = -L/usr/local/macchina/lib/ -lPocoFoundation -lPocoData -lPocoDataSQLite

libXPCDatabase_la_CXXFLAGS = -I/usr/local/macchina/include/

7、回到xpcdetector目录下新建一个autogen.sh文件,内容如下:

#!/bin/sh
aclocal
autoheader
automake --add-missing
autoconf

8、在xpcdetector目录下执行命令:bash ./autogen.sh

9、./configure --prefix=[安装路径名]

10、make -j4

11、sudo make install

四、可能遇到的问题

在linux下编译c/c++程序出错:

$ automake --add-missing

....

configure.in:18: required file `build/ltmain.sh‘ not found

....

解决方案(libtoolize配置即可):

$libtoolize --version

-libtoolize (GNU libtool) 1.4.2

.....

$libtoolize --automake --copy --debug --force

如果没有安装libtool请先安装:sudo apt-get install libtool

时间: 2024-12-08 14:23:55

linux使用autoconf和automake生成configure的相关文章

例解 autoconf 和 automake 生成 Makefile 文件

转自:http://www.ibm.com/developerworks/cn/linux/l-makefile/ 引子 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项 目开发还是安装应用软件,我们都经常要用到make或 make install.利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系. 但是如

Linux下Makefile的automake生成全攻略

作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将给大家介绍如何使用 autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make instal”就可以把程序安装到Linux

Linux下autoconf和automake使用

作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用"./configure","make","make instal&

编译安装thrift和使用autoconf,automake生成Makefile文件

http://thrift.apache.org/docs/install/centos http://blog.csdn.net/kevinhwm/article/details/8640762 http://www.cnblogs.com/hnrainll/archive/2013/01/06/2847069.html http://www.ibm.com/developerworks/cn/linux/l-makefile/

autoconf、automake

概念 使用autoconf.automake 程序开发人员只需要写一些简单的含有预定义宏的文件, 由autoconf根据一个宏文件生成configure, 由automake根据另一个宏文件生成Makefile.in, 再使用configure依据Makefile.in来生成一个符合惯例的Makefile 程序安装步骤一般分为: ./configure make make install 注:第一步./configure的文件是用户的一个脚本文件(或可执行程序),这里面完成了"autoconf.

Linux下使用automake、autoconf生成configure文件

一.生成configure过程中各文件之间的关系图 二.详细介绍 autoscan: 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形. aclocal:根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中.aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4

Linux autoconf和automake使用

作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make instal”就可以把程序安装到Linux系统中去了.

linux学习笔记(一) 使用automake生成Makefile

作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make instal”就可以把程序安装到Linux系

图解aclocal、autoconf、automake、autoheader、configure

原文地址:http://hi.baidu.com/yzkuang/blog/item/557e4f24423d8136c9955908.html 1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形. 2.aclocal (automake):根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件