使用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!\n");

 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里面的技巧也会很不错。

posted @ 2018-02-22 14:42  897807300  阅读(213)  评论(0编辑  收藏  举报