• 生成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.

    顺序 选择 循环 总结

  • 相关阅读:
    Easy UI form表单提交 IE浏览器不执行success ,以及 datagrid 展示过慢
    JS批量获取参数构建JSON参数对象
    Easy UI datebox控件无法正常赋值
    EasyUI控件combobox重复请求后台,dialog窗口数据异常
    后台Post/Get 请求接口 方式
    WebForm 页面ajax 请求后台页面 方法
    实现输入框小数多 自动进位展示,编辑时实际值不变
    页面获取Web控件ID不能正常获取,它惹得祸
    线性表的链式存储——单链表
    线性表
  • 原文地址:https://www.cnblogs.com/Braveliu/p/11340132.html
Copyright © 2020-2023  润新知