zoukankan      html  css  js  c++  java
  • 使用automake等命令自动生成Makefile文件 (转载)

    使用automake等命令自动生成Makefile文件

      Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多。好在Linux为我们提供了自动生成功能完善的Makefile文件的工具autoconf/automake。本文讲述如何使用它们生成Makefile文件。要用到的工具组主要包括autoconf,automake,perl语言环境和m4。

      可以使用命令rpm -qa | grep command_name查看它们的信息,在Ubuntu下看了,默认却没装,所以在Redhat AS 6.5 X86_64下弄了。

      查看的示例如下:

          整个工具组的工作流程如下图:

           

         下面以实例演示如何使用automake等生成Makefile文件。

    1  写一个简单的程序,本例写了个简单的计算斐波那契数的程序,有三个文件组成:main.c,fib.c,fib.h,代码如下:

     main.c

    1 #include<stdio.h>
    2 #include"fib.h"
    3  int main()
    4 {
    5 int n=0;
    6 printf("input n= ");
    7 scanf("%d",&n);
    8 printf("fib(%d=%d ",n,fib(n));
    9
    10 return 0;
    11 }

    fib.h

    int fib(int n);

    fib.c

    1 #include"fib.h"
    2  int fib(int n)
    3 {
    4 if(n==0)
    5 return 0;
    6 if(n==1||n==2)
    7 return 1;
    8 return fib(n-1)+fib(n-2);
    9 }

    使用ls命令查看如下:

    2  使用autoscan生成configure.scan文件,将其重命名为configure.ac,并做适当修改。如下:

     

    configure.scan内容如下:

    修改configure.ac内容如下:

    AC_INIT()中分别应填程序的名字,版本,和作者的联系方式(一般是Email)

    添加一行AM_INIT_AUTOMAKE(),参数添程序名字,版本号

    最后AC_OUTPUT()生成的文件。

    3  使用aclocal工具生成aclocal.m4

    4  使用autoconf工具生成configure文件

    5  使用autoheader使用config.h.in文件

    6  用vi生成一个空文件Makefile.am, 并编辑如下三项。

    第一项:软件等级,有三个候选项:foreign,gnu,gnits

    第二项:生成的可执行文件名

    第三项:生成可执行文件所需的原始文件,有多个文件时用空格隔开,如本例

    7  使用automake生成Makefile.in文件,内容如下:

    8  运行configure配置生成最终的Makefile文件

     

    9  使用Makefile编译,运行程序

    还可以将代码打包发布:

       

         这些命令功能强大,很多参数的意思这里没列出来,可以查阅相关书籍和手册。本文旨在展示整个过程,和最常用到的参数。以后写程序特别是文件较多时是不是方便了很多?

  • 相关阅读:
    异构网络中的并行传输问题
    如何编程实现快速获取一个整型数中的bit流中1的个数
    对单例模式的一个简单思考
    OsgEearh 中的 FeatureEditor的实现原理
    关于在osgearth 中 出现 arial.ttf : file not handled 的问题
    Qt 中 this->size() this->rect() event->size() 三者差异
    Qt 中QPainter 使用中出现的问题
    对c语言中static函数的理解
    对声明和定义的理解
    个人对头文件的理解
  • 原文地址:https://www.cnblogs.com/terrytian88/p/5915379.html
Copyright © 2011-2022 走看看