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了?

  • 相关阅读:
    magent + memcached 集群测试
    SQL Server 2000/2005检测存储过程名是否存在,存在删除
    ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
    使用asp.net/c# ajax 乱码的解决办法
    清空删除mssql数据库日志原文网址:http://admin.88443.net/article.
    net2.0下的简繁转换
    创建和注册自定义 httpModules 模块
    监控用户是否关闭浏览器
    Asp.net(Ajax)表单验证 函数包
    IE自带的网页过渡特效
  • 原文地址:https://www.cnblogs.com/Amagasaki/p/3464828.html
Copyright © 2011-2022 走看看