【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("\n----PRINT ARGS A: ----\n%d\n", a);
printf("\n----PRINT ARGS B: ----\n%d\n", b);
return (a + b);
} int main(int argc , char **argv)
{
int a = , b = ;
printf("Please INPUT ARGS A and B end by [ENTER]\n");
scanf("%d%d", &a, &b);
int value = sum(a, b);
printf("Execute SUM result: \n%d\n", value);
return ;
}

(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])
# 修改点[]
# AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
# 修改后:
# FULL-PACKAGE-NAME 为程序名称,VERSION为当前版本, BUG-REPORT-ADDRESS为bug汇报地址
AC_INIT(sum, 1.0., kaizen@.com)
# 修改点[] 增加一行如下:
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. # 修改点[] 增加一行如下:
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.

顺序 选择 循环 总结

生成Makefile文件全过程的更多相关文章

  1. 利用 autoconf 和 automake 生成 Makefile 文件

    一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...

  2. linux下使用automake工具自动生成makefile文件

    linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf/Au ...

  3. 使用automake等命令自动生成Makefile文件 (转载)

    使用automake等命令自动生成Makefile文件   Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多.好在Lin ...

  4. 利用qmake生成Makefile文件

    在linux下写程序,免不了要写Makefile文件,用automake,总感觉比较麻烦,linux人喜欢做麻烦的事,以显得风格迥异. 其实用qmake生成Makefile文件相当简单. 1 装好qm ...

  5. 例解 autoconf 和 automake 生成 Makefile 文件

    本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...

  6. 使用autoconf和automake生成Makefile文件(转)

    Makefile好难写 曾经也总结了一篇关于Makefile的文章<make和makefile的简单学习>.但是,总结完以后,发现写Makefile真的是一件非常痛苦的事情,的确非常痛苦. ...

  7. 自动生成Makefile文件

    主要的工具有autoscan, aclocal, autoheader, autoconfig,automake 1 .创建c源文件hello.c #include <stdio.h> i ...

  8. 生成makefile文件编译源文件

    1.利用CodeBlock的cbp文件生成makefile文件 reverse@ubuntu:~/Desktop/CreateMakeFile$ ls cbp2make.linux-x86 freeg ...

  9. 使用autoconf与automake自动生成MakeFile文件

    automake主要通过编辑Makefile.am来控制它的行为,下面就常用的三个Makefile.am配置做出说明. 1.1. autotools的工作原理 autotools最终是为了生成Make ...

随机推荐

  1. 小程序开发:用Taro搭建框架

    1.node环境 1) 下载 . 官方地址:https://nodejs.org/en/ 或 https://nodejs.org/zh-cn/ 2)安装. 一路next......Install.直 ...

  2. 解决ionic安装不上的方法

    (1)打开nodeJs按正常步骤来install -g -d ionic ,等待执行完毕  (2) 不管成不成功,打开C:\Users\keranbing\AppData\Roaming\npm\no ...

  3. js 字符串 有没有 像C# @ 那种 换行也可以显示的方法 \

  4. Shell 编程 until语句

    本篇主要写一些shell脚本until语句的使用. 计算1-50的和 #!/bin/bash i=0 s=0 until [ $i -eq 51 ];do let s+=i;let i++ done ...

  5. Java多线程上下文切换

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10843676.html 一:什么是上下文切换 CPU处理任务时不是一直只处理一个,而是通过给每个线程分配CP ...

  6. <pre> 保留文本格式显示在网页上

    <code> 标签 解释:保留输入的格式空格等不变,原样显示在网页上 例如: <pre> 通知 即日起不再提供公共设施 个店铺需自行准备. 望周知~!! 2020/10/10 ...

  7. ubuntu安装vbox虚拟机

    ubuntu安装vbox虚拟机 一.安装准备 1.查看主机配置 二.下载安装包    (建议将安装包下载并保存) a.下载virtualbox安装包 下载链接https://www.virtualbo ...

  8. springboot easypoi 报错The bean 'beanNameViewResolver', defined in class path resource [cn/afterturn/e

    事故现场: The bean 'beanNameViewResolver', defined in class path resource [cn/afterturn/easypoi/configur ...

  9. springmvc多环境配置-profiles

    1 pom.xml 添加 profiles 标签 <profiles> <!--pro 线上环境--> <profile> <id>hdapp_pro& ...

  10. Detectron2源码阅读笔记-(三)Dataset pipeline

    构建data_loader原理步骤 # engine/default.py from detectron2.data import ( MetadataCatalog, build_detection ...