zoukankan      html  css  js  c++  java
  • automake之简单的例子

    作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。

      在本文中,将给大家介绍如何使用 autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make install”就可以把程序安装到Linux系统中去了。这将特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的Toy程序,那么这个文章对你也会有很大的帮助。

    本文构建的工程架构为:

    sheepdog 

    ----sheep

          -----sheep.c

    1.在sheepdog/sheep/目录下创建一个sheep.c,其内容如下:

    #include <stdio.h>
    int main(int argc, char** argv)
    {
        printf("Hello, Auto Makefile!\n");
        return 0;
    }

    2.运行autoscan,自动创建两个文件:autoscan.log和configure.scan

    3.修改configure.scan的文件名为configure.ac(或者configure.in),然后将内容改为如下:

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

    AC_PREREQ([2.68])
    AC_INIT([sheepdog], [1.0], [zhang_zhang@live.com])

    # 用来侦测所指定的源码文件是否存在,来确定源码目录的有效性

    AC_CONFIG_SRCDIR([sheep/sheep.c])

    # 用于生成config.h文件,以便autoheader使用

    AC_CONFIG_HEADERS([config.h])

    AM_INIT_AUTOMAKE([sheepdog], [1.0])

    # Checks for programs.
    AC_PROG_CC

    # Checks for libraries.

    # Checks for header files.

    # Checks for typedefs, structures, and compiler characteristics.

    # Checks for library functions.

    # 创建输出文件。在`configure.in'的末尾调用本宏一次。

    AC_OUTPUT([Makefile sheep/Makefile])

    需要注意的是红色的部分,1.AM_INIT_AUTOMAKE是必须添加的东西,2.每个文件夹都需要生成Makefile文件

    4. 运行 aclocal, 生成一个“aclocal.m4”文件和一个缓冲文件夹autom4te.cache,该文件主要处理本地的宏定义

    5. 运行 autoconf, 目的是生成 configure

    6. 运行 autoheader,它负责生成config.h.in文件。该工具通常会从“acconfig.h”文件中复制用户附加的符号定义,因此此处没有附加符号定义,所以不需要创建“acconfig.h”文件

    7. 在sheedog和sheep目录分别创建Makefile.am,其内容分别为:

        SUBDIRS= sheep

        AUTOMAKE_OPTIONS=foreign

        bin_PROGRAMS=sheep

        sheep_SOURCES=sheep.c

    其中的AUTOMAKE_OPTIONS为设置automake的选项。由于GNU(在第1章中已经有所介绍)对自己发布的软件有严格的规范,比如必须附 带许可证声明文件COPYING等,否则automake执行时会报错。automake提供了三种软件等级:foreign、gnu和gnits,让用 户选择采用,默认等级为gnu。在本例使用foreign等级,它只检测必须的文件。

    8. 运行automake --add-missing

    9. 运行configure

    10. make && make install

    11.在sheepdog/sheep目录下就可以运行sheep了

    9. 运行 touch NEWS README AUTHORS ChangeLog

  • 相关阅读:
    汇编--基础分析:数据段在内存中的存放及空间
    汇编语言(王爽)第六章检测点与实验5
    C语言经典例题100(22~40)
    C:数组小结(3)
    随机不重复的取数组元素,并赋值给div使用
    关于Apple设备私有的apple-touch-icon属性详解
    测试你女友是否跟你结婚插件的源码
    CSS子元素设置margin-top作用于父容器?
    hybrid app开发中:苹果移动设备实用Meta标签
    chromium 修改chromium的设置选项
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2843781.html
Copyright © 2011-2022 走看看