【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.

顺序 选择 循环 总结

最新文章

  1. 12. UITextField
  2. Android studio 提示:Can&#39;t use Subversion command line client: svn Probably the path to Subversion executable is wrong. Fix it.
  3. 腾讯优测优分享 | 游戏的UI自动化测试可以这样开展
  4. python学习心得第二章
  5. IOS开发之控件篇UICollectionViewControllor第一章 - 普通介绍
  6. poj2115-C Looooops(扩展欧几里德算法)
  7. jQuery UI Autocomplete是jQuery UI的自动完成组件(share)
  8. 华为手机连不上adb解决方法
  9. xcode Git
  10. Open vSwitch使用案例扩展实验
  11. shell各种执行方式区别
  12. iOS - OC SQLite 数据库存储
  13. 判断相同区间(lazy) 多校8 HDU 5828 Rikka with Sequence
  14. CCNP第一天 Rip综合实验
  15. WPF中的资源简介、DynamicResource与StaticResource的区别(转)
  16. javascript定时器(上)
  17. 我的第二个网页制作:p,hn,br标签的使用
  18. Go语言的核心Routine-Channel
  19. word2vec并行实现小记
  20. 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

热门文章

  1. 架构师小跟班:推荐46个非常经典的Linux面试题
  2. 不要在 MySQL 中使用“utf8”,请使用“utf8mb4”
  3. 关于两个DIV之间的空白字符
  4. D2Admin基本使用
  5. cs1.6 8倍镜
  6. Nginx 核心配置-长连接配置
  7. [转]【会话技术】Session技术
  8. MATLAB读取一个文件夹下的多个子文件夹中的多个指定格式的文件
  9. docker学习10-注册docker hub账号
  10. react.js知识汇总