第一部分 Autotools 基础 介绍

C++学习(三五九)GNU构建系统Autotools(autoconf automake libtool autoscan autoheader aclocal automake m4) GNU构建系统是Autotools,它包含autoconf automake libtool autoscan autoheader aclocal automake等工具。 autoconf autoconf命令的主要作用是创建configure。它基于configure.ac文件生成configure文件。 autoscan autoscan是autoconf的辅助命令,它创建一个预备的configure(configure.scan),作为autoconf命令的输入。我们可以按需在这个文件上进 阅读详情
+++++++++++++++++++++++++ 第一部分 Autotools 基础 介绍 ++++++++++++++++++++++++++++
(注意:要实际用的开发模式,见第二部分以后。)

The GNU build system has two goals:
The first is to simplify the development of portable programs.
The second is to simplify the building of programs that are distributed as source code.
The first goal is achieved by the automatic generation of a `configure' shell script, which configures the source code to the installer platform. The second goal is achieved by the automatic generation of Makefiles and other shell scripts that are typically used in the building process.


When we speak of the GNU build system we refer primarily to the following four packages:

   1. Autoconf produces a configuration shell script, named `configure', which probes the installer platform for portability related information which is required to customize makefiles, configuration header files, and other application specific files. Then it proceeds to generate customized versions of these files from generic templates. This way, the user will not need to customize these files manually.
   2. Automake produces makefile templates, `Makefile.in' to be used by Autoconf, from a very high level specification stored in a file called `Makefile.am'. Automake produces makefiles that conform to the GNU makefile standards, taking away the extraordinary effort required to produce them by hand. Automake requires Autoconf in order to be used properly.
   3. Libtool makes it possible to compile position independent code and build shared libraries in a portable manner. It does not require either Autoconf, or Automake and can be used independently. Automake however supports libtool and interoperates with it in a seamless manner.
   4. Autotoolset helps you develop portable source code that conforms to the GNU coding standards by generating various boilerplate files from which you can plunge into developing your software.

一句话:用户看见的是configure文件,makefile模板和config模板。
(1) 对于用户来讲,configure文件被用户执行,以填充makefile模板(比如用什么编译器,用什么参数来链接,-D宏定义等)和config模板(就是把所有的#undef,按需要改成#define)。 这刚好为了上面的目的一。
(2) 对于包的开发者来讲,makefile模板是Makefile.in,它是通过写Makefile.am,然后由Automake生成。config模板是config.h.in,由Autoheader扫描你写的configure.in,看里面你想检测哪些宏,就生成这个含所有宏的模板文件,就是一条条#undef xxx。configure文件是写configure.in,然后由Autoconf生成。 这刚好为了上面目的二。

而Libtool是单独的工具,但是,被嵌入到了Automake中,即,可以在Makefile.am中调用Libtool. 至于Autotoolset又是另外一个工具集了。


一些工作能够被简化:
    1. Building multidirectory software packages. It is much more difficult to use raw make recursively. Having simplified this step, the developer is encouraged to organize per source code in a deep directory tree rather than lump everything under the same directory. Developers that use raw make often can't justify the inconvenience of recursive make and prefer to disorganize their source code. With the GNU tools this is no longer necessary.
     2. Automatic configuration. You will never have to tell your users that they need to edit your Makefile. You yourself will not have to edit your Makefiles as you move new versions of your code back and forth between different machines.
     3. Automatic makefile generation. Writing makefiles involves a lot of repetition, and in large projects very error-prone. Also, certain portions of a good makefile, such as the `install' and `uninstall' targets are very critical because they are run by the superuser. They must be written without any bugs! The GNU build system automates makefile writing. You are only required to write `Makefile.am' files that are much more terse and easy to maintain.
     4. Support for test suites. You can very easily write test suite code, and by adding one extra line in your `Makefile.am' make a check target available such that you can compile and run the entire test suite by running make check.
    5. Automatic distribution building. The GNU build tools are meant to be used in the development of free software, therefore if you have a working build system in place for your programs, you can create a source code distribution out of it by running make distcheck.
    6. Shared libraries. Building shared libraries becomes as easy as building static libraries.



两顶帽子:
the developer hat: 你是代码体系的制造者,需要装一系列文档中所列工具(automake,autoconf...)
the installer hat: 你是代码的使用者,只想安装,仅仅需要make和shell。


make dist和make distcheck的区别:
他们都是用于对当前状态的开发目录打包,打成可安装包(能configure,make,make install)。前者基本就是打包,当然也会查一些文件是否缺失。后者除了打包,还要尝试一些测试,包括解包,并模拟用户运行configure等来看是否正常。想要多检查或自定义检查(test suit)就用distcheck。


5.4 Understanding the hello world example
这一节很重要,要看细节。
但总体上告诉我们,我们需要写两个文件:Makefile.am和configure.in
Makefile.am是逻辑语言,没有执行部分。目的是简化Makefile的各种编写。
configure.in是顺序执行的,里面加入的各个宏都是拿来执行的,目的是探测系统。
(比如你要编译C++程序,就要加入AC_PROG_CXX宏,这个宏会检测系统的g++编译器,在生成makefile时采用该编译器来书写。)
而看看生成的:
configure:由aclocal.m4和configure.in合成,前者是后者中宏的定义,他们通过autoconf合成configure文件。当然,aclocal.m4要先用aclocal生成(aclocal实际上去/usr/share/aclocal目录中的各个.m4文件中,去找你在configure.in中使用的宏的定义,并拷贝过来,生成aclocal.m4文件!)
Makefile:由configure和Makefile.in生成。当然Makefile.in要由Makefile.am生成,Makefile.in就是Makefile.am翻译成的,就是一些东西还待确定的Makefile。


configure将Makefile.in转化成Makefile实际要做的:
1. 替换一些编译的宏,比如编译器,编译选项...(这也揭露了为什么要使用autotools──各个平台上编译链工具和编译选项不同。不光是由于2,2是程序的宏,比如某系统支不支持某API)
2. 替换一些程序的宏,常用方式是生成含#define的头文件,或者给编译器传-D参数



模板: ──── 下面是手册中给出的例子,但是我真正用的模板,已经比这个更新了,见下面 acmkdir的模板。
`configure.in'

    AC_INIT(hello.c)               #任意一个文件即可(初始化一些东西)
    AM_CONFIG_HEADER(config.h)     #生成的配置头文件名
    AM_INIT_AUTOMAKE(hello,0.1)    #make dist打包名和版本号(用于初始化和automake相关的东西)
    AC_PROG_CC                     #探测C编译器类型
    AC_PROG_INSTALL                #生成install-sh这个“安装工具”,安装make好的东西
    AC_OUTPUT(Makefile)            #表明哪些目录下应该让Makefile.in生成Makefile

`Makefile.am'

    bin_PROGRAMS = hello           #格式是 xx 的 xx 有哪些,这里读:二进制的程序有hello。
    hello_SOURCES = hello.c

`hello.c'
    #ifdef HAVE_CONFIG_H           #怎么回事?当然是-DHAVE_CONFIG_H写在了Makefile中的编译器命令行
    #include <config.h>            #而如果不用AM_CONFIG_HEADER,则会直接用-Dxxx传很多参数,而不是
    #endif                         #放在config.h中。详细见下面说明。

    #include <stdio.h>
    main()
    {
        printf("Howdy, pardner!/n");
    }

为了生成configure文件:
% aclocal                                 # 提供configure.in中你写的宏的实际脚本,它实际上去/usr/share/aclocal目录中的各个.m4文件中,去找你在configure.in中使用的宏的定义,并拷贝过来,生成aclocal.m4文件!
% autoconf                                # 生成configure文件
% touch NEWS README AUTHORS ChangeLog     # automake需要这些破东西
% autoheader                              # 生成config.h.in模板,供configure填充
% automake -a                             # 生成Makefile.in模板,供configure填充
上面的顺序是重要的。


说明:不使用autoheader和AM_CONFIG_HEADER(config.h),那么所有的程序的宏,都通过-D传给编译器,下面是节录编译和链接:
gcc -DPACKAGE_NAME=/"/" -DPACKAGE_TARNAME=/"/" -DPACKAGE_VERSION=/"/" -DPACKAGE_STRING=/"/" -DPACKAGE_BUGREPORT=/"/" -DPACKAGE=/"hello/" -DVERSION=/"0.1/" -I.     -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.o hello.c
mv -f .deps/hello.Tpo .deps/hello.Po
gcc -g -O2   -o hello hello.o
可以看到,出现大量的-D,而如果使用autoheader和AM_CONFIG_HEADER,那么只有-DHAVE_CONFIG_H被传递给gcc,其他的程序的宏,通过放在config.h文件中,然后用户在hello.c中include一下,就行了。下面是节录编译和链接:
gcc -DHAVE_CONFIG_H -I.     -g -O2 -MT hello.o -MD -MP -MF .deps/hello.Tpo -c -o hello.o hello.c
mv -f .deps/hello.Tpo .deps/hello.Po
gcc -g -O2   -o hello hello.o



版本:
0.1 和 0.1.1的区别:
0.1是official版本号:0表示主版本,1表示次版本。主版本增加,要有很大功能提升和稳定性提升。次版本增加,只需要改掉一个bug就可以。
0.1.1是unofficial版本号:最后一个1是表示开发者内部交流使用,比如改了半个bug,算个成就,就加个1在末尾。如果用户要当小白鼠,可以用unofficial的。



使用 acmkdir 工具:
acmkdir是Autotoolset工具集中的一个,可以帮你建立好“工程”,就是含有那一堆文件的目录,类似于VC的工程向导。
要省事的话可以用这个。用法是 “acmkdir -t 顶层目录类型”。
默认的类型是支持C++检测的,用在configure.in(或.ac)中的宏是LF打头的一系列。
如果你要用传统的宏,可以 -t traditional,这样就会看到这个手册里熟悉的一些宏了。

--------- 如何使用 acmkdir 来加快你的项目创建:----------
它只有一种工程树模式:顶层的Makefile.am里含有:
EXTRA_DIST = reconf configure
SUBDIRS = m4 src doc
表明,会在m4,src,doc下去执行你要Make的东西。
所以,用完acmkdir后,要做的事只有三件:
(1) 修改 configure.ac 为如下:(修改的原因是:有些宏多了,有些少了)
AC_INIT([sheep],                        # 工程名,会被在./reconf时,写到一些文件中
        [0.0.1],                        # 版本号,自己写,同样会被写到文件中,和打包的名字后
        [Yi Feng yifengcn@gmail.com],   # 先写作者姓名,再写邮箱,会被写到文件中,如Author
        [sheep])                        # 打包的名字。比如make distcheck会生成 sheep-0.0.1.tar.bz2
AC_CONFIG_AUX_DIR(config)               # 将一些辅助文件,存放在config目录中(否则顶层目录文件过多)
AM_CONFIG_HEADER(config.h)              # 说明,要使用config.h做为宏定义的文件
AM_INIT_AUTOMAKE([dist-bzip2])          # 这里面当然很多参数,而[dist-bzip2]表示打包按bz2打包,默认是gz
#放在config.h中。详细见下面说明。

AC_PROG_CC                              # 检测用什么C编译器
AC_PROG_CXX                             # 检测用什么C++编译器
AC_PROG_INSTALL                         # 生成安装脚本 install-sh
AC_PROG_RANLIB                          # 使用ranlib(如果你要生成库的话)
AC_PROG_MAKE_SET                        # 如果你的源文件要按照多层目录来组织

AC_CONFIG_FILES([                       # 生成的所有Makefile的位置,这其实是给Automake看的!!
        Makefile                        # Automake会读取configure.ac文件,然后在这些位置生成Makefile.in
        README
        doc/Makefile
        m4/Makefile
        src/Makefile
])

AC_OUTPUT                               # 将各个Makefile生成之!(从各个Makefile.in)

(2) 把你的源文件,放在src下,然后修改src下的Makefile.am即可。
    bin_PROGRAMS = sheep
    sheep_SOURCES = sheep.cpp
然后源文件里,在最上面写:
    #ifdef HAVE_CONFIG_H         
    #include <config.h>           
    #endif                       

(3) 再回到顶层目录,./reconf一下,就OK了。reconf内容如下:
#!/bin/sh
rm -f config.cache
aclocal -I m4
autoconf
autoheader
automake -a
exit

之后,就可以那老三步来编译了。当然,如果你觉得它写的configure.in太多东西,可以自己改。



作者对编程的建议:
为了避免麻烦,请这样:
(1) 将问题细分,将每个子问题,编成一个库。
(2) 剩下的问题,就是测试和组装库成可执行文件。
这样的话,好处很多 ──── 便于测试,便于排错,便于控制问题规模



make distclean   vs   make clean:
有时对文件做了某种改动,比如从.c改为了.cpp,就发现莫名奇妙的无法make错误,这时应该 make distclean 一下,这会清除掉所有 make 产生的东西,而不仅仅是目标文件。实际上,是清除了如 .deps 文件夹,这文件夹里的文件有目标文件和源文件和头文件的依赖关系等,如果仅仅 make clean是不会清除的,这在文件名发生变化时(如从.c变为.cpp),可能导致无法再make的错误,保错说,还是希望找.c,但是找不到。
大白编译——autotools与cmake 本文对比了C语言跨平台编译工具autotools和cmake的使用。首先分析了C语言跨平台的常见问题,包括函数差异、头文件差异等,并介绍了autotools通过configure脚本自动检测系统特性的工作原理。随后通过实际示例演示了两个工具在Debian12上的编译流程:autotools使用autogen.sh生成configure脚本后执行./configure && make && make install;cmake则通过cmake命令生成构建文件后编译安装。两者都能 阅读详情

相关推荐

Autotools入门教程

在Unix上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个Makefile就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于make的文档比较多,不过写一个Makefile总是一件很烦人的事情,GNU Autoconf 及 Automake 这两个软件就是帮助程序开发者轻松产生Makefile 文件的。现在的GNU软件如Apache, MySQL Minigui等都是利用Autoconf,Automake实现自动编译的。用户只要使用 “./configure”, “make”, “make install” 就可以把程序安裝到系统中

Autotools使用教程

autotools入门教程

OneGit 6899

智能网联汽车电子电气架构(下)

从资产的表现形式, 可以分为数据、 软件、 硬件、 服务等, 而从需要保护的业务过程和活动、 所关注信息的角度, 资产类型可包括基于 ECU 的控制功能、 与特定车辆相关的信息、 车辆状态信息、 用户信息、 配置信息、 特定的软件、 内容等。面向新一代 EEA 的安全需求, 基于芯片提供的 OTP, 或SHE\HSM 的安全存储能力, 实现系统关键数据(身份、 密钥等关键信息) 的安全存储, 保证系统的关键数据不被盗取、 破坏、 改写。结合攻击者的动机与识别出的系统用例, 分析对汽车电子系统可能的攻击。

m0_58838529的博客 1473

automake分析

Linux下autoconf和automake使用 转自:http://hi.baidu.com/liuyanqiong/blog/item/0a6f0ad9d28e1d3d32fa1c7b.html   作为Linux下的程序开发人员,一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯

IT杂谈 1407

【AIGC】人工智能训练师(高级)考试题库-橙点同学

例如,在嘈杂的环境中进行声音转文字,即使是优秀的模型也可能会出现一些错误,但这并不意味着该模型本身质量差,在其他较为理想的环境下,它可能会有很好的表现。例如,在一些语音应用和系统中,会使用SSML来实现对语音合成的精细控制,如调整语速、语调、音量等,而这些应用和系统的开发往往会遵循W3C的相关标准和框架,其中就包括SSML这一语音合成标记语言。例如,在语音识别等场景中,像“去火车站怎么走”这样的语音指令,没有其他嘈杂的背景声音或模糊不清的表述,就属于无噪音的数据,有利于系统准确地进行处理和分析。

RisunJan的博客 9921

Virtuoso ADE Explorer实战技巧:从基础操作到高级仿真

本文深入解析了Virtuoso ADE Explorer在模拟电路仿真中的核心价值与实战技巧。作为Cadence平台的专业工具,它专为高效、系统化的设计空间探索而生,能大幅提升PVT验证、参数扫描和蒙特卡洛分析的效率。文章从基础界面操作、并行仿真管理,到高级的参数扫描、数据报告生成及蒙特卡洛结果深度剖析,提供了全面的避坑指南与工作流优化建议,帮助工程师从重复劳动中解放,专注于电路设计与性能优化。

ios99的博客 900

autotools工具使用

AutoTools 傻瓜入门 学习GNU/LINUX开发的编程人员,上手之后不久就会在编译开源软件的时候碰到configure脚本,过段时间还会知道configure脚本是autoconf生成的;但是真正想用起来autoconf,却是要弄明白config.h,configure.in,Makfile.am等一大堆的文件,这可能要花些功夫。让我们从一个例子开始,争取为大家省点力气。  我们用个小

simonzhao0536的专栏 725

微信小程序PC端兼容性实战:如何绕过限制在电脑上运行手机端小程序

本文详细解析了微信小程序在PC端的兼容性问题及解决方案,重点介绍了如何利用`wx.getSystemInfo`API检测运行环境,并通过修改User-Agent、动态环境检测与适配等技术手段实现手机端小程序在PC端的顺畅运行。文章还提供了常见兼容性问题的解决方法和调试工具推荐,帮助开发者高效应对多端适配挑战。

weixin_28366053的博客 867

Autotools上手指南1——autoconf基本思想

Autotools上手指南1——autoconf基本思想 http://blog.dccmx.com/2011/01/autotools-1/ posted o...

80

用 SAML 2.0 Bearer Assertion 配置 ABAP OAuth 2.0 令牌交换

摘要: SAP系统集成中,身份跨系统传递是关键挑战。OAuth 2.0的SAML 2.0 Bearer Assertion grant机制通过SAML断言换取访问令牌,实现安全身份传递。配置核心在ABAP的SOAUTH2事务码,需绑定可信SAML身份提供商(IdP)并指定访问范围。实际应用中,需确保SSL加密传输,正确配置SAML IdP信任关系,并为OAuth客户端分配专用系统用户。常见问题包括证书不匹配、权限配置不当等,需分层控制权限边界以保障安全。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 837

海康Visionmaster-全局脚本:VM 加载方案后自动执行 的方法,如何让VM在方案加载后自动执行流程?

海康Visionmaster-全局脚本:VM 加载方案后自动执行 的方法,如何让VM在方案加载后自动执行流程?

视觉人机器视觉的博客 2038

autoreconf 工具安装与使用指南

摘要 autoreconf是GNU Autotools的核心工具,用于自动生成跨平台C/C++项目的构建文件。主要步骤包括:1)安装autoconf/automake/libtool;2)创建configure.ac和Makefile.am配置文件;3)运行autoreconf -ivf生成构建脚本;4)执行标准./configure && make流程。关键配置文件需定义项目元信息、编译器检查和文件输出规则。常见问题涉及辅助文件缺失和交叉编译配置,解决方案包括使用autoheader和指定

浩瀚之水的专栏 2023

【Kubernetes】Kubernetes 安全沙箱深度对比:gVisor vs Kata Containers

Kubernetes安全沙箱深度对比:gVisor和Kata Containers在架构、性能与安全性方面各有特点。gVisor通过用户态内核(Sentry)实现软件隔离,启动快(毫秒级)但CPU开销大(20-30%),适合Web服务等场景。Kata Containers采用轻量级虚拟机提供硬件级隔离,启动较慢(1-2秒)但兼容性更好,适合金融等高安全需求。测试显示gVisor在动态请求下性能下降33%,而Kata性能接近原生。建议根据场景选择:多租户/快速启动用gVisor,敏感数据/极致安全用Kata,

九师兄 178

autotools介绍

我们知道在Linux下编译一个比较大型的项目,我们可以通过Makefile的方式来完成。但是,Makefile拥有复杂的语法结构,甚至让人难以领会,当我们项目非常大的时候,维护Makefile会成为一件非常头疼的事。Autotools工具就是专门用来生成Makefile的,这个工具让让我们很大程度上降低了开发的难道。Autotoolsautoscanaclocalautoconfautoheaderautomake最终目标是生成Makefile。

laplaya的博客 1244

【DNN实现二分类模型推理部署(C#)----20240712】

【DNN实现二分类模型推理部署(C#)----20240712】

weixin_44119674的博客 212

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

autotools简介

AUTOTOOLS - John Calcote; Autotools简介

大草的博客 1752

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

autotools工具介绍

http://blog.youkuaiyun.com/panzhh459/article/details/5747412 3.3、autotools工具 3.3.1、介绍 如果要编译的工程比较大,尝试手动去建立、维护Makefile的话,不仅很复杂,而且费时费力,还容易出错,这时使用autotools工具就是一个不错的选择,只要输入工程中的目标文件、依赖文件、文件目录等信息就可以自动生成

潜龙勿用 7242

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Autotools

一、autotools基础 在linux上编译一个工程需要先调用./configure,大部分linux开源项目都使用autotools编译架构来生成configure这个脚本。通过在执行./configure,产生Makefile,src/Makefile,config.h,为下一步编译做准备。随后调用make进行编译。一般步骤如下: ./configure make make check ...

书香水墨 3039

Linux下autoTools工具集使用介绍

Author : iStone E-mail : liul.stone@gmail.com Date : 2015-09-19 15:16:38 一 使用autoTools工具集 1.1 什么是autoTools我们都了解make工程管理器的强大功能。但编写makefile 确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此。那么,有没有一种轻松的手段生成makefile而同时又能让用户享受

小石头 6711

autotools 和 cmake 构建 Makefile

后来 autotools 发展成了许多开源项目的标准工具,在很多大型项目,尤其是起源比较早的项目经常会看到 autotools 相关的脚本。一般情况先,我们会在源文件目录下创建一个 build 目录,进入 build 目录,执行 cmake -DXXX=ON -DYYY=OFF .. ,这样构建不污染源代码,会在 build 本地生成中间文件以及某些根据系统生成的文件(例如:config.h)。遇到具体的报错情况,可以根据提示,把需要的安装的补上来即可。语法比较简洁,平台兼容好,模块化设计,内置了很多。

一个金牛座猿猿子的技术分享空间 1506

深入解析 Autotools 自动化工具

Autotools 是经典构建系统工具,其在跨平台兼容性和构建流程自动化方面的贡献不可忽视。通过学习 Autotools,开发者不仅可以掌握复杂构建系统的原理,还能更好地理解现代构建工具的发展方向。是一套功能强大的构建系统工具集,用于自动生成软件项目的构建脚本,解决跨平台兼容性问题。尽管如此,Autotools 仍在许多经典开源项目中占据重要地位,其深厚的生态和广泛的兼容性使其在特定场景下仍具不可替代性。文件定义构建目标和规则,例如需要编译的源文件、输出的可执行文件等。其主要任务是帮助开发者生成可移植的。

Interview_TC的博客 2211

跨平台开发Autotools

详解autotools工具原理和使用步骤

2301_76197086的博客 978

autotools

文章目录前言1 前言 makefile可以很好的帮我们管理工程,但是大型的工程很难编写makefile,用autotools通过config的方式来帮助生成makfile文件,makfile看文章: https://blog.youkuaiyun.com/weixin_44705391/article/details/122730294 1 ...

weixin_44705391的博客 1114

深入理解 Linux 命令 `autom4te`

autom4te是 GNU Autotools 工具集中的一个重要程序,它用于执行m4宏处理器来生成脚本或文件。虽然通常不需要直接调用autom4te来构建项目,但了解其基本用法和工作原理有助于更好地理解 Autotools 的工作原理和构建流程。如果您正在使用 Autotools 进行项目构建,那么对autom4te的了解将是有益的。

听风的鱼鱼儿 763
上一篇: LINUX字符设备驱动程序原理总结
下一篇: 第二部分 Automake的标准工程组织
jackred
博客等级 码龄23年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值