zoukankan      html  css  js  c++  java
  • 使用gnu automake编译helloworld

    使用gnu automake编译helloworld

      按照许多介绍automake基本步骤的教程中的说法,我在尝试使用automake编译helloworld示例程序的时候,仍然遇到了几个小坑,所幸后面都解决了。

      下面把我的编译步骤给列出来。

          1. 创建helloworld目录,进行目录后创建helloworld.c文件:

      mkdir helloworld

      cd helloworld

      vim helloworld.c

          helloworld.c的内容如下:   

    #include <stdio.h>

    #include <stdlib.h>  //注意:需要添加此两行头文件

    int main(int argc, char** argv)

    {

     printf("Hello, Linux World! ");

     return 0;

    }

        2. 使用autoscan扫描当前目录,生成configure.scan,将生成的文件修改文件名称为configure.ac(注意:修改后名称不是configure.in),编辑其内容,包括修改AC_INIT行为目标程序名称、版本号、出错向指定邮箱发邮件,在AC_CONFIG_HEADERS行后添加AM_INIT_AUTOMAKE行,修改AC_OUTPUT行。修改后的configure.ac内容如下:

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

    AC_PREREQ([2.69])

    AC_INIT(helloworld, 1.0, #########@##.com)

    AC_CONFIG_SRCDIR([helloworld.c])

    AC_CONFIG_HEADERS([config.h])

    AM_INIT_AUTOMAKE(main, 1.0)

    # Checks for programs.

    AC_PROG_CC

    # Checks for libraries.

    # Checks for header files. AC_CHECK_HEADERS([stdlib.h])

    # Checks for typedefs, structures, and compiler characteristics.

    # Checks for library functions.

    AC_OUTPUT([Makefile])

        3. 在当前目录下创建Makefile.am,内容如下:

    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=main
    main_SOURCES=helloworld.c

        注意:此处的bin_PROGRAMS后面的main与AM_INIT_AUTOMAKE括号里面设置项一致即可。

       4. 按顺序分别执行aclocal、autoconf、autoheader、automake --add-missing即可。

       5. 此时应该可以执行三步曲 ./configure、make、make install操作了。如果不想安装到公共目录中,可以不用运行make install的。

       6. 运行./helloworld查看输出结果。

       以上只是使用automake中最简单的flat情况的处理步骤。automake按照一个项目的目录结构,可以将编译过程分为三种情况,flat、shallow、deep。至于如何进行后两种情况的处理,真实复杂的项目还会将不同项目、或者使用不同编译选项生成的库文件、可执行文件合并放到指定的目录中,本人仍在努力领悟中。或许可以下载一些开源软件学习它们的configure.ac、Makefile.am里面的技巧也会很不错。

  • 相关阅读:
    高效存储过程分页
    c#函数参数
    MonoRail学习:可重复组件ViewComponents的使用
    跨域SSO的实现
    WebSockets基础
    NVelocity用法
    MonoRail MVC应用(2)-构建多层结构的应用程序
    MonoRail学习-入门实例篇
    关于transform属性导致字体模糊的问题
    在小程序中实现收缩展开
  • 原文地址:https://www.cnblogs.com/wuweidong/p/6813652.html
Copyright © 2011-2022 走看看