automake的使用1
安装命令:
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使用流程
执行命令:
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不支持左大括号,我们根据提示把相应行文件对应行中的大括号(包括左右两个大括号)去掉
修改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
执行命令:
aclocal #产生aclocal.m4文件、即为配置成功
autoconf #产生configure文件、即为配置成功
执行命令:
autoheader #生成config.h.in
创建和编辑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) 编译顶层目录
执行命令
automake --add-missing 生成Makefile.in文件,无输出信息即可成功
执行命令
sudo ./configure && sudo make && sudo make install
运行:
./helloworld
打包发布,生成helloworld-2.0.tar.gz:
make dist
automake的使用1的更多相关文章
- 第4月第1天 makefile automake
1. gnu make的函数调用是$,比如 $(subst ee,EE,feet on the street) 规则中“TARGETS”可以是空格分开的多个文件名 a all: echo $(subs ...
- 利用 autoconf 和 automake 生成 Makefile 文件
一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...
- linux下使用automake工具自动生成makefile文件
linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf/Au ...
- 使用automake等命令自动生成Makefile文件 (转载)
使用automake等命令自动生成Makefile文件 Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多.好在Lin ...
- 手动安装m4, autoconf, automake, libtool
转自http://ruby-china.org/topics/2434 系列文章原载于自己的博客,TOPI.CO (http://topi.co) ,某天不小心就push错啦,懒得从头再来,上传到Ru ...
- unix automake 使用,快速生成你的Makefile
使用automake快速生成编译的Makefile 1,确保自己装有的软件automake autoconf 2, 1)执行autoscan 并将生成的configure.scan重命名为config ...
- Linux下使用automake、autoconf生成configure文件
一.生成configure过程中各文件之间的关系图 二.详细介绍 autoscan: 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是con ...
- Linux下使用autoconf 和 automake 编译简单的HelloWorld
使用过开源C/C++项目的同学都知道,标准的编译过程已经变成简单的三部曲:./configure /make/make install,使用起来很方便,不像平时自己写代码,要手写一堆复杂的makefi ...
- emacs工程管理,cedet ede插件自动构建Make,Automake
鉴于自己一直都是在做客户端开发方面的工作,服务端很多知识都随着时间淡忘了,最近有一个计划,用一些时间补一下基础.所以早上很早就起床,花了一点时间大致浏览了一下BSD socket的相关API,然后用G ...
- Linux autoconf和automake使用
作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Mak ...
随机推荐
- CentOS 7 编译部署LAMP环境
文章目录 1.需求以及环境准备 1.1.版本需求 1.2.环境准备 1.3.安装包准备 2.编译升级Openssl 2.1.查看当前Openssl版本 2.2.备份当前版本Openssl文件 2.3. ...
- Python 基于 TCP 传输协议的网络通信实现
1.基础概念 什么是网络编程? 指在网络环境中,如何实现不在同一物理位置中的计算机之间进行数据通信 如果要保证数据通信顺利完成,则需要先了解如下几个概念: 1.1 协议 不同计算机内的进程之间进行数据 ...
- 盘点Go中的开发神器
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 在Java中,我们用Junit做单元测试,用JMH做性能基准测试(benchmark),用as ...
- 数据分析六个步骤,一款BI工具即可全部搞定
数据分析是将大量的数据转化为有价值的信息,以求最大化地利用数据的功能,发挥数据的作用.数据分析的类型可以分为现状分析.原因分析.预测分析,按流程分为以下6个步骤: (1) 明确数据分析目的和思路 明确 ...
- 年底获奖人太多?奖状可以用Smartbi电子表格这么做!
又到一年年终时,你的年终奖到手了吗?奖金没领到,发个奖状压压惊 今天给大家分享年终奖相关的年终奖状的批量套打功能,保证你的奖状及时到手! 示例说明 现有多个人员的奖励需要通知,需要生成可翻页的奖状.并 ...
- string 字符串的操作 大全类的使用
Array.Sort(vv, string.CompareOrdinal); //ASCII排序 string[] words = { "The", "1quick&qu ...
- C#正则表达式(通俗易懂)
正则表达式有多重要,话不多说,直接入正题把. 首先我们来说说元字符. 1. . 点号代表除了换行意外的任意单个字符 例如 a.b 说明a和b之间只能有任意一个字符. 2.[]代表从这里面取出任意一个 ...
- SevenZip.SevenZipLibraryException: Can not load 7-zip library or internal COM error! Message: failed to load library.
SevenZip.SevenZipLibraryException: Can not load 7-zip library or internal COM error! Message: failed ...
- Eclipse Debug 调试步骤及注意事项
debug方法 第一步:打开java代码文件,在左侧双击鼠标设置断点,或者在左侧右键点击Toggle Breakpoint 第二步:点击eclipse上方的"蜘蛛"按钮,点击deb ...
- oj教程--向量容器
vector向量容器不但像数组一样对元素进行随机访问,还能在尾部插入元素,是一个简单.高效的容器, 完全可以替代数组.vector具有内存自动管理的功能,对于元素的插入和删除,可动态调整所占用的内存空 ...