文章目录
- configure
- make
- make install
- 关于文件 configure 的简单介绍
- 其它命令简介
C 语言开发的应用程序的源码包常以
.tar.gz
为扩展名,并且这些源码包通常使用 GNU 的 AUTOCONF 和 AUTOMAKE 生成编译配置文件,我们拿到这样的软件包后,执行下面的安装三部曲就可以完成安装了。
想要了解 AUTOCONF 和 AUTOMAKE 这两个东西到底是干什么的,猛戳此链接:https://www.zhihu.com/question/22644913
configure
你需要进入到源码包的根目录中,再执行这个命令,该命令会对你的系统进行编译环境检测,并且会生成符合 GNU 规范的文件 Makefile,为下一步的编译做准备,你可以通过加上参数来对安装进行控制,比如代码:
./configure –prefix=/usr
说明:
执行命令 configure 必须要指明具体的路径,该指令文件在源码包的根目录下,所以指定相对路径 ./configure
就可以执行了,为什么要指定具体的路径?因为系统根本不知道你的指令文件在哪里,那些不要你指明具体路径就可以直接执行的指令是因为这些指令文件所在目录早已配置到环境变量 PATH 中了,但是你下载的源码包的根目录根本不在环境变量 PATH 中,所以当然需要你自己指明才行。
–prefix=/usr
意思是将该软件安装在 /usr
下面,执行文件就会安装在 /usr/bin
(而不是默认的 /usr/local/bin
),资源文件就会安装在 /usr/share
(而不是默认的 /usr/local/share
)。具体可以使用哪些选项,你可以通过 ./configure --help
察看详细的帮助说明。
make
这一步就是编译,大多数的源代码包要通过这一步进行编译(当然有些 perl 或 python 编写的软件需要调用 perl 或 python 来进行编译)。如果在 make 过程中出现 error ,你就要记下错误代码,然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),也可能是你的系统少了一些依赖库导致的错误,这些需要自己仔细研究错误代码。
比如错误提示:
make: *** 没有指明目标并且找不到 Makefile。 停止。
问题很明了,没有 Makefile,怎么办,原来是要先 ./configure
一下,再执行编译命令 make
。
make install
这条命令用来进行安装程序的,当然有些软件需要先运行 make check
或 make test
来进行一些检测,这一步一般需要你有 root 权限(因为要向系统写入文件)。安装成功后通常你还可以执行 make clean
删除一些临时文件。
如果用 bin_PROGRAMS 宏的话,程序会被安装至 /usr/local/bin
这个目录。
关于文件 configure 的简单介绍
文件 configure 是一个 shell 脚本,AUTOCONF 和 AUTOMAKE 就是用来生成文件 configure 的。这个脚本文件可以自动设定源程序以符合各种类 Unix 操作系统的特性,并且根据系统变量及环境产生合适的 Makefile 文件或是 C 的头文件(header file),让源代码程序可以很方便地在这些不同的系统上被编译连接。
其它命令简介
make clean
:清除编译产生的可执行文件及目标文件(object file,*.o)。make distclean
:除了清除可执行文件和目标文件外,把configure
所产生的Makefile
也清除掉。make dist
:将程序源代码和相关的档案压缩打包成一个压缩文件以供发布。执行完在目录下会产生一个以PACKAGE-VERSION.tar.gz
为名称的文件。PACKAGE
和VERSION
这两个变量是根据configure.in
文件中AM_INIT_AUTOMAKE(PACKAGE,VERSION)
的定义。make distcheck
:和make dist
类似,使用该命令完成压缩后会去检测压缩文件是否正常。也就是说该命令除了会把程序的源代码和相关文件压缩打包成.tar.gz
文件外,还会自动把这个压缩文件解开,执行configure
,并且进行make
的动作,确认编译无误后,会显示这个.tar.gz
文件可供发布了。