configure 脚本-configure脚本.md
title: ./configure 脚本date: 2021-05-15 13:25:02.323
updated: 2021-05-15 14:13:43.273
url: /?p=159
categories: GCC
tags: gcc
./configure是甚?
GCC源代码树根目录中的一个脚本。用于设置配置值和创建GCC编译程序必需的make 程序的描述文件。换句话说,configure脚本为了让一个程序能够在各种不同类型的机器上运行而设计的。在使用make编译源代码之前,configure会根据自己所依赖的库而在目标机器上进行匹配。
configure本质上是一个shell脚本。为什么叫configure?嗯,约定俗成,没什么大道理。然后,这个脚本根据所在的系统环境生成makefile文件。
configure脚本运行时扫描当前环境,生成一个名为config.status的子脚本。子脚本将Makefile.in文件转换为适应于当前系统环境的Makefile文件。
‘configure’脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上’–help’选项执行’configure’脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的。
简单来说,我们在windows安装软件的时候,点击安装包,大多数程序可以配置默认选项,也可以自定义选项,比如程序的路径,大多数软件都是默认C盘,我们可以自定义其它盘,当然,在Linux中,是没有分盘符的,但是我们可以设置路径。也就因为这样,就像我们上面所说的一样,configure选项特别多,每个软件的配置也是不太相同。
./configure的选项
选项 | 介绍 |
---|---|
–cache-file=FILE | configure’会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会存储在一个cache file里.当configure一个每个子树里都有’configure’脚本的复杂的源码树时,一个很好的cache file的存在会有很大帮助. |
–help | |
–no-create | |
–quiet –silent | |
–version | |
–prefix=PEWFIX | |
–exec-prefix=EPREFIX | |
–bindir=DIR | |
–sbindir=DIR | |
–libexecdir=DIR | |
–datadir=DIR | |
–sysconfdir=DIR | |
–sharedstatedir=DIR | |
–localstatedir=DIR | |
–libdir=DIR | |
–includedir=DIR | |
–oldincludedir=DIR | |
–infodir=DIR | |
–mandir=DIR | |
–srcdir=DIR | |
–program-prefix=PREFIX | |
–program-suffix=SUFFIX | |
–program-transform-name=PROGRAM | |
–build=BUILD | |
–host=HOST | |
–target=GARGET | |
–disable-FEATURE | |
-enable-FEATURE[=ARG] | |
–with-PACKAGE[=ARG] | |
–without-PACKAGE | |
–x-includes=DIR | |
–x-libraries=DIR |
GNU build system
https://www.gnu.org/software/automake/faq/autotools-faq.html
这个工具能够帮助我们生成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命令的主要作用是创建和使用可移植的共享(动态链接)库。
参考文献
- https://blog.csdn.net/duyuanhai/article/details/17353179?utm_medium=distribute.pc_relevant.none-task-blog-2
defaultBlogCommendFromMachineLearnPai2default-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromMachineLearnPai2default-1.control - https://www.jianshu.com/p/81916fba741c