码迷,mamicode.com
首页 > 其他好文 > 详细

automake/autoconf的简单例子

时间:2014-09-11 22:15:42      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   使用   ar   for   文件   

项目一 helloworld

整个基础上仅有一个helloworld.c文件,功能也非常简单,只是向屏蔽输出一句hello。

新建一个helloworld目录,然后在里面新建一个文件helloworld.c,内容为:

#include <stdio.h>

int main(int argc, char **agrv)
{
    printf("Hello, Merlin\n");

    return 0;
}

执行命令autoscan生成一个架构configure.scan,将其重新命名为configure.ac(新版本使用ac后缀名,不再使用in后缀),此时目录中含有以下文件

merlin@tfAnalysis:~/t/hellworld$ ls
autoscan.log  configure.ac  helloworld.c

原configure.scan的内容为:

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

AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([helloworld.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_OUTPUT

将其修改为以下样子:

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

AC_PREREQ([2.69])
AC_INIT(helloworld, 0.1, tfa2012@foxmail.com)
AC_CONFIG_SRCDIR(helloworld.c)
#AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE

# 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_OUTPUT(Makefile)

AC_CONFIG_SRCDIR(helloworld.c)的功能是在./configure时检测文件helloworld.c是否存在,从而检测源码的正确性。

 

依次执行aclocal和autoconf两人个命令,此时文件夹中内容为:

merlin@tfAnalysis:~/t/hellworld$ ls
aclocal.m4  autom4te.cache  autoscan.log  configure  configure.ac  helloworld.c

新建文件Makefile.am文件,并填写入以下内容:

AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = helloworld
helloworld_SOURCES = helloworld.c

执行automake --add-missing

merlin@tfAnalysis:~/t/hellworld$ automake --add-missing
configure.ac:11: installing ./compile
configure.ac:8: installing ./install-sh
configure.ac:8: installing ./missing
Makefile.am: installing ./depcomp

此时文件夹中内容为:

merlin@tfAnalysis:~/t/hellworld$ ls
aclocal.m4      compile       depcomp       Makefile.am
autom4te.cache  configure     helloworld.c  Makefile.in
autoscan.log    configure.ac  install-sh    missing

这个时候就可以使用./configure来生成Makefile文件了

merlin@tfAnalysis:~/t/hellworld$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands

编译出来试试:

merlin@tfAnalysis:~/t/hellworld$ make
gcc -DPACKAGE_NAME=\"helloworld\" -DPACKAGE_TARNAME=\"helloworld\" -DPACKAGE_VERSION=\"0.1\" -DPACKAGE_STRING=\"helloworld\ 0.1\" -DPACKAGE_BUGREPORT=\"tfa2012@foxmail.com\" -DPACKAGE_URL=\"\" -DPACKAGE=\"helloworld\" -DVERSION=\"0.1\" -I.     -g -O2 -MT helloworld.o -MD -MP -MF .deps/helloworld.Tpo -c -o helloworld.o helloworld.c
mv -f .deps/helloworld.Tpo .deps/helloworld.Po
gcc  -g -O2   -o helloworld helloworld.o  
merlin@tfAnalysis:~/t/hellworld$ ls
aclocal.m4      config.log     depcomp       install-sh   missing
autom4te.cache  config.status  helloworld    Makefile
autoscan.log    configure      helloworld.c  Makefile.am
compile         configure.ac   helloworld.o  Makefile.in
merlin@tfAnalysis:~/t/hellworld$ ./helloworld 
Hello, Merlin

 

automake/autoconf的简单例子

标签:style   blog   color   io   os   使用   ar   for   文件   

原文地址:http://www.cnblogs.com/tfanalysis/p/3967290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!