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

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

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

          查看的示例如下:

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

         

         下面以实例演示如何使用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=\n");
    7 scanf("%d",&n);
    8 printf("fib(%d=%d\n",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  手工编辑Makefile.am文件。

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

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

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

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

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

     

    9  使用Makefile编译,运行程序

    还可以将代码打包发布:

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

  • 相关阅读:
    火狐插件火狐黑客插件将Firefox变成黑客工具的七个插件
    memcache安装环境:WINDOWS 7
    PHP正则表达式
    968. 监控二叉树 力扣(困难) dfs 官方说DP
    375. 猜数字大小 II 力扣(中等) 区间动态规划、记忆化搜索
    629. K个逆序对数组 力扣(困难) 区间动态规划
    剑指 Offer 51. 数组中的逆序对 力扣(困难) 巧用归并排序算法
    488. 祖玛游戏 力扣(困难) dfs
    16. 最接近的三数之和 力扣(中等) 双指针
    319. 灯泡开关 力扣(中等) 数论
  • 原文地址:https://www.cnblogs.com/njucslzh/p/1723320.html
Copyright © 2011-2022 走看看