【转】理解 configure 脚本
原文:https://www.jianshu.com/p/81916fba741c
------------------------------------------------------------
configure
configure脚本为了让一个程序能够在各种不同类型的机器上运行而设计的。在使用make编译源代码之前,configure会根据自己所依赖的库而在目标机器上进行匹配。
约定俗成的,所有的configure脚本都把脚本文件名起为configure
,一般来讲都是shell脚本,根据所在的系统环境生成makefile文件。有时候看到一些程序的configure内容超级之多,让人难以看下去。
configure脚本运行时扫描当前环境,生成一个名为config.status
的子脚本。子脚本将Makefile.in
文件转换为适应于当前系统环境的Makefile
文件。
GNU build system
这个工具能够帮助我们生成configure脚本。GNU build system,又叫做Autotools
。
这个工具查询当前系统的环境变量、平台架构、当前所依赖的库以及他们的位置,然后根据这些信息去make,这样就能实现同一套代码仅需configure一下就可以在不同的unix/linux系统中编译运行。
Autotools包含的命令有autoconf
,automake
,libtool
。
autoconf
autoconf命令的主要作用是创建configure
。它基于configure.ac
文件生成configure
文件。
autoscan
autoscan
是autoconf的辅助命令,它创建一个预备的configure(configure.scan
),作为autoconf命令的输入。我们可以按需在这个文件上进行添加内容,修改之后手工修改名字变成configure.ac
文件。
autoheader
autoheader
也是autoconf的辅助命令,用于生成一个configure的模版头文件config.h.in
。
automake
automake命令的主要作用是创建Makefile
。以Makefile.am
和configure.ac
为输入,以Makefile.in
为输出。Makefile.in
在configure执行时用于生成Makefile
。
libtool
libtool命令的主要作用是创建和使用可移植的共享(动态链接)库。
其他相关命令
ifnames
命令可以列出程序中的预处理标示符,比如#if
,#ifdef
等。
m4
处理文件中的宏。
pkg-config
查询已安装库的接口。
configure 标准文件流
下面的命令和文件流清晰的描述了从configure到make的整个过程。

参考资料
作者:那些年我们一起遇到过的坑
链接:https://www.jianshu.com/p/81916fba741c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2016-07-14 网络包