安装命令:

sudo apt install automake autoconfig

简单的例子

automake实例:

helloworld.c

#include <stdio.h>
#include <string.h>
extern int output(char* data);
int main()
{
int n=15;
printf("hellow world %d \n",n);
output("from helloword.c");
return 0;
}

output.c

#include <stdio.h>
#include <string.h>
int output(char* data)
{
printf("output data=%s\n",data);
return 0;
}

auto使用流程

  1. 执行命令:

    autoscan

    注意如果是第一次使用autoscan会报错如下

    Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE [^\}]*}/ at /usr/bin/autoscan line 361.

    这是因为现在的Perl不支持左大括号,我们根据提示把相应行文件对应行中的大括号(包括左右两个大括号)去掉

  2. 修改configure.scan并改名为configure.ac

    sudo vi configure.scan
    # -*- Autoconf -*-
    
    # Process this file with autoconf to produce a configure script.
    
    AC_PREREQ([2.68])
    
    AC_INIT([helloworld], [2.0], [542335496@qq.com])# 修改此行
    
    AM_INIT_AUTOMAKE(helloworld,2.0) # 修改此行
    
    AC_CONFIG_SRCDIR([output.c])
    
    AC_CONFIG_HEADERS([config.h])
    
    # Checks for programs.
    
    AC_PROG_CC
    
    # Checks for libraries.
    
    # Checks for header files.
    
    AC_CHECK_HEADERS([string.h])
    
    # Checks for typedefs, structures, and compiler characteristics.
    
    # Checks for library functions.
    
    AC_OUTPUT(Makefile)# 修改此行

    修改文件名称:

    mv configure.scan configure.ac
  3. 执行命令:

    aclocal  #产生aclocal.m4文件、即为配置成功
    autoconf #产生configure文件、即为配置成功
  4. 执行命令:

    autoheader #生成config.h.in
  5. 创建和编辑Makefile.am文件:

    vi Makefile.am

    内容为:

    AUTOMAKE_OPTIONS= foreign 
    
    bin_PROGRAMS= helloworld 
    
    helloworld_SOURCES= helloworld.c output.c
    • 其中的AUTOMAKE_OPTIONS为设置automake的选项。automake提供了三种软件等级:foreign、gnu和gnits,让用 户选择采用,默认等级为gnu。在本例使用foreign等级,它只检测必须的文件。

    • bin_PROGRAMS定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空格隔开。

    • helloworld_SOURCES定义“helloworld”这个执行程序所需要的原始文件。如果”helloworld”这个程序是由多个原始文件所产生的,则必须把它所用到的所有原 始文件都列出来,并用空格隔开。例如:若目标体“helloworld”需要“helloworld.c”、“sunq.c”、“helloworld.h”三个依赖文件,则定义 helloworld_SOURCES=helloworld.c sunq.c helloworld.h。要注意的是,如果要定义多个执行文件,则对每个执行程序都要定义相应的file_SOURCES。

    • AM_CPPFLAGS 编译器的-I参数

    • SUBDIRS 在处理顶层目录之前,先递归处理子目录

    • $(top_srcdir) 源代码所在目录

    • $(top_builddir) 编译顶层目录

  6. 执行命令

    automake --add-missing 生成Makefile.in文件,无输出信息即可成功
  7. 执行命令

    sudo ./configure && sudo make && sudo make install
  8. 运行:

    ./helloworld
  9. 打包发布,生成helloworld-2.0.tar.gz:

    make dist

automake的使用1的更多相关文章

  1. 第4月第1天 makefile automake

    1. gnu make的函数调用是$,比如 $(subst ee,EE,feet on the street) 规则中“TARGETS”可以是空格分开的多个文件名 a all: echo $(subs ...

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

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

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

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

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

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

  5. 手动安装m4, autoconf, automake, libtool

    转自http://ruby-china.org/topics/2434 系列文章原载于自己的博客,TOPI.CO (http://topi.co) ,某天不小心就push错啦,懒得从头再来,上传到Ru ...

  6. unix automake 使用,快速生成你的Makefile

    使用automake快速生成编译的Makefile 1,确保自己装有的软件automake autoconf 2, 1)执行autoscan 并将生成的configure.scan重命名为config ...

  7. Linux下使用automake、autoconf生成configure文件

    一.生成configure过程中各文件之间的关系图 二.详细介绍 autoscan: 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是con ...

  8. Linux下使用autoconf 和 automake 编译简单的HelloWorld

    使用过开源C/C++项目的同学都知道,标准的编译过程已经变成简单的三部曲:./configure /make/make install,使用起来很方便,不像平时自己写代码,要手写一堆复杂的makefi ...

  9. emacs工程管理,cedet ede插件自动构建Make,Automake

    鉴于自己一直都是在做客户端开发方面的工作,服务端很多知识都随着时间淡忘了,最近有一个计划,用一些时间补一下基础.所以早上很早就起床,花了一点时间大致浏览了一下BSD socket的相关API,然后用G ...

  10. Linux autoconf和automake使用

    作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Mak ...

随机推荐

  1. php发送邮件 (phpmailer)

    1.首先下载phpMailer文件官方文件https://sourceforge.net/projects/phpmailer/: 还有class.smtp.php. 2.去配置一下发送邮件的服务器, ...

  2. MyBatis功能点二:plugins插件使用

    MyBatis自定义插件使用步骤(已有pojo及mapper的基础上) 一.自定义插件,实现Interceptor接口 二.核心配置文件sqlMapConfig.xml文件增加插件相关内容 测试 测试 ...

  3. Cesium 加载地形数据

    1.注册Cesium Ion账号,注册地址:Sign In | Cesium ion 否则,加载数据会报错{code: "InvalidCredentials", message: ...

  4. 1. 堪比JMeter的.Net压测工具 - Crank 入门篇

    目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...

  5. Renix软件如何建立OSPF邻居——网络测试仪实操

    OSPF可以通过OSPF向导的方式方便的创建OSPF邻居, 也可以通过纯手工的方式创建OSPF邻居, 本文介绍的是纯手工的方式创建. 在工作中, 推荐使用OSPF向导的方式来创建, 会比较简单和高效. ...

  6. Kafka经典三大问:数据有序丢失重复

    Kafka经典三大问:数据有序丢失重复 在kafka中有三个经典的问题: 如何保证数据有序性 如何解决数据丢失问题 如何处理数据重复消费 这些不光是面试常客,更是日常使用过程中会遇到的几个问题,下面分 ...

  7. 【01】Spring Boot配置文件相关

    1.Spring Boot 获取属性的属性源,优先级从高到低 (1)命令行参数 (2)java:comp/env里的JNDI属性 (3)JVM系统属性 (4)操作系统的环境变量 (5)随机生成的的带r ...

  8. WIN10:开机启动项设置

    搜索 config,在启动栏关闭要关闭的即可

  9. Python:PIL(三)——Image

    学习自:PIL官方文档--Image (2条消息) Python图像处理PIL各模块详细介绍_章子雎的博客-CSDN博客 一.Image模块 1.open 用法 open(fp,mode='r',fo ...

  10. PhpStudy代码执行后门

    0x00 概述 只需要两个参数 Accept-Encoding: gzip,deflate Accept-Charset: Base64编码(PHP代码) 0x01 利用代码 加群可以下载:87369 ...