使用Automake和Autoconf生成Makefile

CentOS gcc/gcc-c++/Apache/Nginx离线安装 虚拟机挂载iso后 列出所有已安装的软件包 yum list installed 安装gcc yum -y install gcc yum -y install gcc_c++ 移除gcc yum -y remove gcc yum -y remove gcc_c++ 阅读详情

automake 所产生的 Makefile 除了可以做到程序的自动编译和链接外,还可以用来生成各种文档(如manual page、info文件),可以将源代码文件包装起来以供发布。所以程序源代码所存放的目录结构最好符合GNU的标准惯例。下面以hello.c程序生成Makefile文件作为例子。

1,在当前目录下创建一个名为hello的子目录。hello这个目录用于存放 hello.c这个程序及相关文件。新建一个源程序文件hello.c

复制代码
#include <stdio.h>

int main( int argc,  char** argv)
{
          printf( " Welcome to use autoconf and automake\n ");
           return  0;
}
复制代码

2,执行autoscan命令生成一个名为configure.scan文件:

autoscan

3,将configure.scan改名为configure.in:

mv configure.scan configure. in

4,打开configure.in,将该文件修改为以下内容:

复制代码
# Process  this file with Autoconf to produce a configure script. 
AC_INIT(hello.c) 
AM_INIT_AUTOMAKE(hello,  1.0) 
# 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_OUTPUT(Makefile)
复制代码

5,然后执行以下两个命令,分别生成aclocal.m4和configure文件:

aclocal
autoconf

6,新建四个空白文件,分别命名为NEWS,README,AUTHORS,ChangeLog。

touch NEWS
touch README
touch AUTHORS
touch ChangeLog

7,创建一个名为Makefile.am的文件,并输入以下内容:

AUTOMAKE_OPTIONS= foreign 
bin_PROGRAMS= hello 
hello_SOURCES= hello.c

8,执行命令“automake --add-missing”,automake 会根据Makefile.am 文件产生一些文件,其中包含最重要的Makefile.in

automake --add-missing

9,最后执行“./configure”命令生成Makefile文件

./configure

10,生成Makefile文件后,就可以执行“make”命令来编译hello.c程序,从而生成可执行程序hello。生成可执行程序hello后,执行。

make
./hello
Welcome to use autoconf and automake

归纳一下这个例子的流程。

(1)在存放源代码的目录下执行autoscan命令生成configure.scan文件。

(2)将configure.scan文件改名为configure.in,并对其默认配置进行修改。

(3)执行aclocal、autoconf两个命令,分别生成aclocal.m4、configure文件。

(4)创建一个名为Makefile.am的文件,并输入相应的内容。

(5)执行automake --add-missing,它根据Makefile.am文件,生成Makefile.in。

(6)执行./configure脚本文件,它根据Makefile.in文件,生成最终的Makefile文件。

通过以上步骤,在源代码所在目录下自动生成了Makefile文件。

 configure.in文件

autoconf是用来产生“configure”文件的工具。“configure”是一个Shell脚本,它可以自动设定一些编译参数使程序能够在不同平台上进行编译。autoconf读取configure.in 文件然后产生''configure''这个Shell脚本。

configure.in 文件的内容是一系列GNU m4 的宏,这些宏经autoconf处理后会变成检查系统特性的Shell脚本。configure.in文件中宏的顺序并没有特别的规定,但是每一个configure.in 文件必须以宏AC_INIT开头,以宏AC_OUTPUT结束。一般可先用autoscan这个工具扫描原始文件以产生一个configure.scan 文件,再对configure.scan 作些修改,从而生成 configure.in 文件

configure.in 文件中一些宏的含义如下。

l    #或dnl:#或dnl后面的内容作为注释不会被处理,它们是注释的起始标志。

l    AC_INIT(FILE):该宏用来说明源代码所在路径,如上例中的AC_INIT(hello.c),表明源代码在当前目录下,名为hello.c。

l    AM_INIT_AUTOMAKE(PACKAGE,VERSION):这个是后面运行automake命令所必需的宏,PACKAGE指明要产生软件的名称,VERSION 是其版本号。

l    AC_PROG_CC:检查系统可用的C编译器,若源代码是用C语言编写的就需要这个宏。

l         AC_OUTPUT(FILE):设置configure命令所要产生的文件。我们最终期望产生Makefile

这个文件,因此一般将其设置为AC_OUTPUT(Makefile)。

在运行automake命令时,还需要一些其他的宏,这些额外的宏由aclocal产生。执行aclocal会产生aclocal.m4文件,如果没有特别的要求,无需修改它。用 aclocal产生的宏将会提示automake如何动作。

另一个重要的文件是Makefile.am。automake根据configure.in中的宏并在perl的帮助下把Makefile.am转成Makefile.in文件。Makefile.am 文件定义所要产生的目标。

 Makefile.am文件

Makefile.am文件中几个预定的选项的含义如下所示。

l    AUTOMAKE_OPTIONS:它用于设置automake的选项。automake 主要是帮助开发 GNU 软件的人员来维护软件,所以在执行automake 时,会检查目录下是否存在标准GNU软件中应具备的文件,例如“NEWS”、“AUTHOR”、“ChangeLog”等文件。设置为foreign 时,automake 会改用一般软件的标准来进行检查。

l    bin_PROGRAMS:定义要产生的可执行程序的文件名。如果要产生多个可执行文件,每个文件名用空白符隔开。

l    hello_SOURCES:定义“hello”这个可执行程序所需要的原始文件。如果“hello”这个程序是由多个原始文件产生的,必须把它所用到的所有原始文件都列出来,并以空白符隔开。假设“hello”还需要“hello.c”、“main.c”、“hello.h”3个文件,则定义hello_SOURCES= hello.c main.c hello.h。如果定义多个可执行文件,则对每个可执行程序都要定义相应的filename_SOURCES,其中filename为要生成的可执行程序的文件名。

编辑好Makefile.am文件后,就可以使用命令automake --add-missing生成Makefile.in。加上--add-missing这个选项是用来提示automake加入包装一个软件所必需的文件,如果不使用该选项,automake可能会报告缺少了某些文件。automake产生出来的 Makefile.in文件是完全符合GNU Makefile规定的,只要执行 configure这个Shell脚本便可以产生合适的Makefile文件了。

 如何使用产生的Makefile文件

执行configure脚本文件所产生的Makefile文件有几个预定的选项可供使用。

l    make all:产生设定的目标,即生成所有的可执行文件。使用make也可以达到此目的。

l    make clean:删除之前编译时生成的可执行文件及目标文件(形如*.o的中间文件)。

l    make distclean:除了删除可执行文件和目标文件以外,把configure所产生的 Makefile文件也清除掉。通常在发布软件前执行该命令。

l    make install:将使用make all或make命令产生的可执行文件以软件的形式安装到系统中。若使用bin_PROGRAMS宏,程序将会被安装到 /usr/local/bin下,否则安装到预定义的目录下。

l    make dist:将程序和相关的文档包装为一个压缩文档以供发布。执行完该命令,在当前目录下会产生一个名为PACKAGE-VERSION.tar.gz的文件。PACKAGE 和 VERSION 这两个参数是来自configure.in文件中的AM_INIT_AUTOMAKE(PACKAGE,
VERSION)。如在上个例子中执行make dist命令,会产生名为“hello-1.0.tar.gz”的文件。

l    make distcheck:与make dist类似,但是加入了检查包装以后的压缩文件是否正常。

作者:洞庭散人

出处:http://phinecos.cnblogs.com/    

本博客遵从 Creative Commons Attribution 3.0 License,若用于非商业目的,您可以自由转载,但请保留原作者信息和文章链接URL。
使用autoconf和automake自动生成Makefile 其中,autoconf和automake是两个常用的工具,它们能够根据项目目录结构和源代码自动生成适合不同平台的Makefile。本文将介绍如何使用autoconf和automake来自动生成Makefile,并提供相应的示例代码。无论是单个项目还是大型软件包,autoconf和automake都可以轻松应对,并生成适合不同平台的Makefile。接下来,我们需要在项目根目录下创建一个名为"Makefile.am"的文件,用于配置automake。首先,我们需要安装autoconf和automake工具。 阅读详情

相关推荐

win平台automake自动生成Makefile工具(附源代码)

自己写的简易的windows平台的自动生成Makefile工具,不需要写配置文件,自动生成,支持一般的控制台项目,可以作为控制台程序开发的小工具,目前正在开发中,当前版本1.2.2。使用方法:在你的工程目录下运行automake,自动生成Makefile文件,可以使用automake -t查看打印自动生成的Makefile(不会写入文件)。第一次上传文件,求人品。

·ubuntu系统使用gcc和makefile编译C++程序

通过更换Ubuntu系统的软件源,可以显著提高软件更新和安装的速度。在Ubuntu下进行C++编程时,使用。

zzs030414的博客 2368

gnu make automake autoconf

GNU的make automake autoconf libtool说明书

Ubuntu系统使用gcc和Makefile编译c程序

首先进入官网,下载Ubuntu20.04桌面版进入到网址之后向下翻页面可以找到Ubuntu20.04资源进行下载。

2203_75562054的博客 3595

DINOv3实战指南:如何利用零样本视觉模型革新工业质检

本文详细介绍了如何利用DINOv3零样本视觉模型革新工业质检流程。通过无需标注数据的自监督学习技术,DINOv3能快速部署高精度检测系统,显著降低成本和提升效率。文章涵盖模型选型、数据准备、实时检测优化及典型行业解决方案,为工业质检提供革命性AI实践指南。

ansible6ops的博客 124

(53页PPT)新型智慧病房整体解决方案(附下载方式)

当前医疗场景存在三大核心矛盾:院内感染风险(如输液异常发现滞后)、信息孤岛现象(11类业务系统数据割裂)、管理效能不足(30%护理时间耗费在机械性工作)。实际案例显示,整体运营效率提升40%,患者满意度提高28个百分点,真正实现了"让技术有温度,让数据会说话"的价值理念。本文将从需求分析、技术架构、应用场景三个维度,深度剖析这份53页解决方案的创新价值与实践路径。床旁智能终端整合12项功能:包括体征自动采集(误差率<1%)、医嘱执行核对(100%条码校验)、智能床垫离床报警(响应时间3秒)等。

AI_data_cloud的博客 716

Ubuntu18.04.1下gcc的安装与使用

gcc的安装 方法一: sudo apt-get build-dep gcc 方法二: sudo apt-get install build-essential `c yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake yum -y install wget httpd-tools vim 安装完了可以执行此命令来查看版本 ```c gcc--version 输出如下: gcc(GCC)4.2.3(Ubuntu4.2.3

Lynnnnna的博客 991

Cartographer从安装到实战:手把手教你运行2D/3D建图与定位

本文提供了一份详尽的Cartographer从零安装到实战应用的完整指南。内容涵盖环境准备、依赖编译、源码构建等关键步骤,并手把手指导读者运行2D/3D官方数据集进行建图与定位测试。文章深入解析了参数配置与自定义数据适配方法,帮助开发者快速掌握这一强大的实时同步定位与建图工具,并将其应用于机器人导航与自动驾驶等实际场景。

rice5的博客 951

使用Automake和Autoconf 生成Makefile 实例

工具简介 GNU Autoconf 及 Automake 这两个软件就是帮助程序开发者轻松产生Makefile 。用户只要使用 “./configure”, “make”, “make install” 就可以把程序安裝到系统中。 整个automake构建过程如下所示: Autoscan 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件...

神技圈子的博客 5671

PPT高清导出秘籍:如何轻松设置600dpi图片分辨率

本文详细解析了PPT导出图片模糊的根本原因,并提供了通过修改Windows注册表将导出分辨率从默认的96dpi提升至600dpi的完整教程。该方法能显著提升图片清晰度,满足学术出版与高质量印刷需求,文中还包含效果对比、进阶设置及常见问题解答。

a0b1c2d3的专栏 1316

从时序参数到电压供给:TTL(RGB)液晶屏驱动调试全解析

本文全面解析TTL(RGB)液晶屏驱动调试的关键技术,从时序参数配置到电压供给系统搭建,详细介绍了同步信号参数、寄存器配置技巧以及升压电路设计。通过实战案例和常见故障分析,帮助工程师快速掌握液晶显示屏调试方法,提升开发效率。

weixin_30588675的博客 247

使用Automake,Autoconf生成Makefile

使用Automake,Autoconf生成Makefile 在Unix上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及 Au

dllbl的专栏 803

用 Docker 一键部署 SillyTavern酒馆 mac/windows/linux通用教程,我再也不手动折腾了!

本文介绍了如何使用 Docker 一键部署 SillyTavern 项目,适用于 Mac、Windows 和 Linux 系统。SillyTavern 是一个本地部署的大语言模型聊天界面,支持多种插件和扩展。文章详细说明了安装 Docker、拉取项目、启动容器、配置白名单、启用插件等步骤,并提供了常见问题的解决方法。通过 Docker 部署,用户可以避免繁琐的手动配置,快速搭建和运行 SillyTavern,适合希望简化部署流程的用户。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2623

使用automake autoconf生成Makefile dh-make发布deb

使用automake,autoconf生成Makefile,dh-make发布deb包

uestcjerry 1052

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

专注于编程、AI、人工智能等多个领域内容研究和分析 641

链路状态路由协议 OSPF (一)

本章将会学习链路状态路由协议OSPF,理解OSPF的基本概念,工作原理,掌握OSPF配置基本命令。本章重点,OSPF的基本概念,OSPF配置。

yj11290301的博客 3475

使用automake、autoconf生成MakeFile文件

从helloworld入手   我们从大家最常使用的 例子程序helloworld开始.   下面的 过程如果简单地说来就是 :   新建三个文件:    helloworld.c    configure.in    Makefile.am   然后执行: aclocal; autoconf; automake --add-missing; ./config...

dengyuju3585的博客 187

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[转载]使用Automake,Autoconf生成Makefile

使用Automake,Autoconf生成Makefile 在Unix上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及 Au

蜗牛档案室 3079

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Linux下使用autoconf和automake生成Makefile

作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了. 在本文中,将介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./c

yuandianlws的专栏 1055

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使用autoconf和automake生成Makefile文件

Makefile好难写 曾经也总结了一篇关于Makefile的文章《 make和makefile的简单学习 》。但是,总结完以后,发现写Makefile真的是一件非常痛苦的事情,的确非常痛苦。而更痛苦的是当需要将代码移植到别的系统上时,这就够你喝一壶的。再说了,作为程序员的我们,是不是更应该投入更多的精力到业务逻辑的编写与处理中呢,而并不是和Makefile纠结呢。 他们是怎么做到的?

阳光梦的专栏 964

使用Automake和Autoconf生成Makefile (没有错误的例子)

<br />使用Automake和Autoconf生成Makefile (转)<br /> <br />automake 所产生的 Makefile 除了可以做到程序的自动编译和链接外,还可以用来生成各种文档(如manual page、info文件),可以将源代码文件包装起来以供发布。所以程序源代码所存放的目录结构最好符合GNU的标准惯例。下面以hello.c程序生成Makefile文件作为例子。<br />1,在当前目录下创建一个名为hello的子目录。hello这个目录用于存放 hello.c这个程序及

iamluda的专栏 614
上一篇: ubuntu安装graphviz
下一篇: linux如何查看一个进程的堆栈
DIY-GEEKER
博客等级 码龄17年 80粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值