阅读过《Linux下的Autoconf和AutoMake(理论篇)》之后,进入到实践环节。
实验环境:CentOS release 6.7 (Final) x64

1.检查一下这4个工具是否准备妥当(automake/autoconf/m4/perl),如果系统没有预安装的话则使用yum install进行安装。
下面列出本实验环境下的各软件版本,不同版本可能会存在不一致的情况。
automake (GNU automake) 1.11.1
autoconf (GNU Autoconf) 2.63
m4 (GNU M4) 1.4.13
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi
ltmain.sh (GNU libtool) 2.2.6b #生成静态库的时候需要使用,本篇不使用

2.创建一个新的实验文件夹test_makefile,并进入该文件夹
命令:
mkdir test_makefile
cd test_makefile

3.创建一个mysqrt.c的源文件,代码如下(注意复制拷贝的代码是否完整):

#include<stdio.h>
#include<math.h>
int main()
{
  int i=0;
  printf("Please input an integer value:\n"); //提示输入一个整形的数
  scanf("%d",&i);
  printf("sqrt(%d)=%f\n",i,sqrt(i)); //这里需要链接到数学库-lm
}

————-以下开始configure的步骤————-

4.执行命令:autoscan
此时在test_makefile文件夹中生成文件configure.scan。

5.将configure.scan文件重命名为configure.in

6.修改configure.in文件内容
①修改前内容

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.  AC_PREREQ([2.63])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([mysqrt.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_CHECK_FUNCS([sqrt])                                            AC_OUTPUT

②修改后内容(注意复制拷贝的代码是否完整)

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.    AC_PREREQ([2.63])  #要求autoconf的版本
AC_INIT(mysqrt, 1.0, [])  #修改里面的内容。FULL-PACKAGE-NAME:程序的名称 VERSION:版本 BUG-REPORT-ADDRESS:错误报告地址;(这里[]表示留空)
AM_INIT_AUTOMAKE(mysqrt,1.0) #增加这一行,是automake所必备宏,2个参数和以上的FULL-PACKAGE-NAME和VERSION一致
AC_CONFIG_SRCDIR([mysqrt.c]) #检查源文件是否存在
AC_CONFIG_HEADERS([config.h]) #生成config.h文件(由于不存在这个文件,后面需要使用autoheader命令来生成)# 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_CHECK_FUNCS([sqrt])                                              AC_OUTPUT(Makefile) #修改这一行,指定生成Makefile文件

7.执行命令:aclocal
生成文件aclocal.m4

8.执行命令:autoconf
生成文件configure

————-以上为生成文件configure的步骤————-

————-以下为生成文件Makefile.in的步骤————-
9.新增一个Makefile.am空文件,并增加如下内容:(注意复制拷贝的代码是否完整)

AUTOMAKE_OPTIONS=foreign  #设定automake的选项
bin_PROGRAMS=mysqrt #定义要产生应用程序的名称
mysqrt_SOURCES=mysqrt.c  #源文件以及头文件
mysqrt_LDADD=-lm  #数学库,可简写为LDADD=-lm

10.执行命令:autoheader
生成文件config.h.in

11.执行命令:

automake --add-missing

生成文件Makefile.in

————-以上为生成文件Makefile.in的步骤————-

12.到此处,所必须的Makefile.in文件和configure文件都准备完成了。
执行命令:./configure
生成文件Makefile

13.执行命令:make
生成执行文件mysqrt

14.执行应用程序:./mysqrt
输入一个整数,可得到正确的结果。

PS:
①修改configure.in或Makefile.am文件,切记重新走一次对应的流程
②修改头文件或源文件后,切记先make clean一次,再重新make

《(转帖整理)Linux下的Autoconf和AutoMake(理论篇) 1》

《CentOS下的Autoconf和AutoMake(完善篇) 3》

转载于:https://www.cnblogs.com/chevin/p/5735663.html

CentOS下的Autoconf和AutoMake(实践篇) 2相关推荐

  1. Linux下autoconf和automake使用

    Linux下autoconf和automake使用 转自:http://hi.baidu.com/liuyanqiong/blog/item/0a6f0ad9d28e1d3d32fa1c7b.html ...

  2. Linux下autoconf与automake

    机器语言,汇编语言与高级语言 C语言的编译和链接 什么是Makefile? autoconf&automake 实例 机器语言,汇编语言与高级语言 机器语言是机器指令的集合.机器指令展开来讲就 ...

  3. CentOS下安装SecureCRT的sz/rz工具包

    2019独角兽企业重金招聘Python工程师标准>>> yum自动安装: yum install lrzsz 手动安装方法如下: 定制安装的linux可能没有把rzsz包安装到系统, ...

  4. Centos下堡垒机Jumpserver V3.0环境部署

    Centos下堡垒机Jumpserver V3.0环境部署1)关闭jumpserver部署机的iptables和selinux [root@test-vm001 ~]# cd /opt [root@t ...

  5. Centos下堡垒机Jumpserver V3.0环境部署完整记录(1)-安装篇

    Centos下堡垒机Jumpserver V3.0环境部署完整记录(1)-安装篇 由于来源身份不明.越权操作.密码泄露.数据被窃.违规操作等因素都可能会使运营的业务系统面临严重威胁,一旦发生事故,如果 ...

  6. centos下cmake安装caffe

    安装必要的依赖项: sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-d ...

  7. centos下安装mysql5.5_CentOS下安装Mysql5.5

    CentOS下安装Mysql 5.5全过程 一.安装cmake # 安装所需依赖包 yum -y install gcc libxml2-dev curl screen \ libpng12-dev ...

  8. CentOS下搭建测试WEB平台

    CentOS下搭建测试WEB平台 LAMP MYSQL 下载免编译的软件包 cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5.1 ...

  9. 例解 autoconf 和 automake 生成 Makefile 文件[转+个人修改]

    引子 无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install.利用make工具,我们可 ...

最新文章

  1. 关注基于云的下一代应用开发
  2. Struts1.x系列教程(5):HTML标签库
  3. 网络专业人士笔记(1~4章)
  4. SpringBoot中将thymeleaf升级到3.0或以上版本
  5. ORACLE10回收站-Recyclebin
  6. PXE 网络化安装linux系统
  7. Linux系统下MYSQL主从同步
  8. PHP原生实现,校验微信公众号||小程序服务器地址
  9. Linux学习整理-网络防火墙iptables-实践篇2
  10. 信息系统分析与设计(自考)
  11. 浪曦struts2学习笔记3
  12. TCP中 滑动窗口RWND 和 拥塞窗口 CWND的区别
  13. 弹出界面 eth1: 设备 eth1 似乎不存在, 初始化操作将被延迟。
  14. 【Web开发】Python实现Web图表功能(D-Tale入门)
  15. [论文阅读]PIXER: an automated particle-selection method based on segmentation using deep neural network
  16. Noisy machines: understanding noisy NNs and enhancing robustness to analog hardware errors
  17. 人人网移动开发架构及相关服务器架构
  18. 服务程序占用服务器内存过大处理
  19. Windows 下 android自动打包 volley项目
  20. 百度云盘超出500没办法保存怎么办

热门文章

  1. docker注册表回传失败 群晖6.2_Glances实时监视群晖运行状况
  2. win10服务器权限修改时间,win10系统修改时间显示没权限的解决方案
  3. c++ double 只输出五位_c 语言第四章 在控制台上数据的输入和输出
  4. c语言中floox的头文件,PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句)...
  5. elementui datetimepicker 移动端_在 Gitee 收获 2.5K Star,前后端分离的 RuoYi 它来了
  6. shiro 同时实现url和按钮的拦截_一个“保存”按钮同时存在“增删改”三种操作,该如何去实现?...
  7. php的延迟绑定,PHP延迟静态绑定使用方法实例解析
  8. ios启动页尺寸_关于移动端App启动页的策划方案
  9. 操作系统导论部分章节习题
  10. 自学笔记——1.Pyhton保留关键字