zoukankan      html  css  js  c++  java
  • 生成Makefile文件全过程

    【1】生成Makefile文件全过程

    整体流程如下图:

    注意:以下文件根目录为testmake(任意位置新建即可)

    (1)测试程序

    1.1 建立两个目录:mkdir include source

    1.2 编辑sum.h文件

    #cd include

    #vim sum.h

    内容如下:

    #include <stdio.h>
    int sum(int a, int b);

    1.3 编辑sum.c文件

    #cd source

    #vim sum.c

    内容如下:

    #include "sum.h"  
    
    int sum(int a, int b)
    {  
        printf("
    ----PRINT ARGS A: ----
    %d
    ", a); 
        printf("
    ----PRINT ARGS B: ----
    %d
    ", b); 
        return (a + b);  
    }  
        
    int main(int argc , char **argv)
    {  
        int a = 0, b = 0;  
        printf("Please INPUT ARGS A and B end by [ENTER]
    ");  
        scanf("%d%d", &a, &b);
        int value = sum(a, b);
        printf("Execute SUM result: 
    %d
    ", value);  
        return 0;
    }

    (2)autoscan

    首先,执行autoscan命令,会生成autoscan.log 和 configure.scan两个文件,如下图:

    然后,重命名并修改configure.scan文件

    cp configure.scan configure.ac

    修改内容详见注释部分:

    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ([2.63])
    # 修改点[1]
    # AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
    # 修改后:
    # FULL-PACKAGE-NAME 为程序名称,VERSION为当前版本, BUG-REPORT-ADDRESS为bug汇报地址
    AC_INIT(sum, 1.0.1, kaizen@163.com)
    # 修改点[2] 增加一行如下:
    AM_INIT_AUTOMAKE
    
    AC_CONFIG_SRCDIR([source/sum.c])
    #AC_CONFIG_HEADERS([config.h])
    
    # Checks for programs.
    AC_PROG_CC
    
    # Checks for libraries.
    
    # Checks for header files.
    
    # Checks for typedefs, structures, and compiler characteristics.
    
    # Checks for library functions.
    
    # 修改点[3] 增加一行如下:
    AC_CONFIG_FILES([Makefile])
    
    AC_OUTPUT

    如上

    (3)aclocal

    利用configure.ac文件,执行命令aclocal,会生成aclocal.m4 和 autom4te.cache两个文件,如下图:

    重要的是aclocal.m4文件

    (4)autoconf

    利用aclocal.m4文件,执行命令autoconf,会生成configure文件,如下图:

    (5)编写Makefile.am文件

    内容如下:

    #Makefile.am  
    bin_PROGRAMS    = sum  
    sum_SOURCES     = include/sum.h source/sum.c  
    sum_CPPFLAGS    = -I include/ 

    注意:sum为程序命名

    如果将sum更改为demo,那么下面两个参数的前缀也需要对应更新,示例:

    demo_SOURCES

    demo_CPPFLAGS

    (6)automake

    首先,明确automake必需文件(9个)为:

    install-sh  
    missing  
    INSTALL  
    NEWS  
    README  
    AUTHORS  
    ChangeLog  
    COPYING  
    depcomp

    其中,命令automake -a会自动生成以下(5个)文件:

    install-sh  
    missing  
    INSTALL  
    COPYING  
    depcomp

    如下图:

    然后,其他(4个)文件手动生成,命令:

    touch NEWS README AUTHORS ChangeLog

    如下图:

    以上准备就绪。最后再执行automake命令,会生成Makefile.in文件,如下图:

    (7)./configure

    configure命令,利用configure和Makefile.in文件,生成Makefile文件。

    (8)make

    此时已经生成了sum(可执行文件名字在前面编写Makefile.am的参数时确定)这个,可以通过./sum直接看到运行结果。

    如下图:

    不过linux系统中一般这里都会再做一步,把它安装到系统里面,这样我们只要在终端输入sum就可以运行程序。

    (9)make install

    OK。现在直接可以在终端运行程序。如下图:

    Good Good Study, Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    HashMap、HashTable与ConcurrentHashMap的区别
    HashMap的扩容机制---resize()
    jdk7中hashmap实现原理和jdk8中hashmap的改进方法总结
    HTML5学习总结——canvas绘制象棋(canvas绘图)
    ShardingJdbc:水平切分
    ShardingSphere:基本概念
    KubeSphere:harbor+gitlab+nexus+springboot流水线部署
    k8s+jenkins:部署SpringCloud微服务
    k8s实现Jenkins的Master-Slave分布式构建
    windows下jar包转成exe执行文件
  • 原文地址:https://www.cnblogs.com/Braveliu/p/11340132.html
Copyright © 2011-2022 走看看