zoukankan      html  css  js  c++  java
  • Ubuntu下使用automake自动生成makefile

    参考 http://docs.huihoo.com/gnu/linux1/makefile.html

    0. 在开始试着用 Automake 之前,请先确认你的系统已经安装以下的软件:
        1. GNU Automake
        2. GNU Autoconf 
        3. GNU m4    
        4. perl  (因为aclocal是perl编写的)
        5. GNU Libtool (如果你需要产生 shared library) 
    1. 一个简单的例子
        Automake 所产生的 Makefile 除了可以做到程序的编译和连结,也已经把
        如何产生程序文件 (如 manual page, info 档及 dvi 档) 的动作,还有   
        把原始程序包装起来以供散 的动作都考虑进去了,所以原始程序所存放   
        的目录架构最好符合 GNU 的标准惯例,接下来我拿 hello.c 来做为例子。
        在工作目录下建立一个新的子目录 ``devel'',再在 devel 下建立一个
        "hello'' 的子目录,这个目录将作为我们存放 hello 这个程序及其相关
        档案的地方:
                  % mkdir devel
                  % cd devel
                  % mkdir hello
                  % cd hello
        用编辑器写个 hello.c 档,
                  #include <stdio.h>
                  int main(int argc, char** argv)
                  {
                     printf(``Hello, GNU! '');
                     return 0;
                  }

    接下来就要用 Autoconf 及 Automake 来帮我们产生 Makefile 档了。 

    2. $autoscan
    这时会在目录下新生成两个文件autoscan.log(日记文件,可以忽略)和configure.scan。

    $ mv configure.scan configure.in       #将configure.scan改名为configure.in

    编辑configure.in:
    -----------------------------configure.in文件开始-----------------------------------------
    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.

    AC_PREREQ([2.64])
    AC_INIT(hello, 1.0, XXXX@XXX.com)  #修改红色的部分,原先为
    AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
    AC_CONFIG_SRCDIR([first.c])
    AC_CONFIG_HEADERS([config.h])
    AM_INIT_AUTOMAKE(hello,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.

    AC_OUTPUT(Makefile)          #添加上红色的部份

    -----------------------------configure.in文件结束-----------------------------------------
    保存。
    3. 新建文件Makefile.am,内容如下:
    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=hello
    hello_SOURCES=hello.c
    保存。
    4. 运行命令aclocal,
    ~/cproject$ aclocal
    命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。
    5. 运行命令autoheader
    ~/cproject$ autoheader
    命令成功之后,会在目录下产生config.h.in这个新文件。
    6. 运行命令autoconf
    ~/cproject$ autoconf
    命令成功之后,会在目录下产生configure这个新文件。
    7. 运行命令automake --add-missing
    ~/cproject$ automake --add-missing
    输出结果为:
    configure.in:8: installing `./install-sh'
    configure.in:8: installing `./missing'
    Makefile.am: installing `./depcomp'
    命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。
    8,运行命令
    ~/cproject$ ./configure
    就可以自动生成Makefile。
    9,make一下看看,是不是已经产生可执行文件hello了?

  • 相关阅读:
    android 带图片的文本框
    Android 调用相册 拍照 实现系统控件缩放 切割图片
    Android核心分析索引
    Layout 水平平分空间、垂直平分空间
    Android中ActivityManagerService与应用程序(客户端)通信模型分析
    Android采用Movie播放GIF动画
    根据银行卡卡号判断银行
    TextView 显示效果
    实现通讯录的弹窗效果
    微软 DLinq技术来临前的国内 .NET 的 ORM 发展之局势
  • 原文地址:https://www.cnblogs.com/Amagasaki/p/3464828.html
Copyright © 2011-2022 走看看