参考:
https://m14.cc/magic-behind-compiling-software/
https://my.oschina.net/surjur/blog/349464
configure, make, make install
./configure
表示运行当前目录下的configure文件,是一个shell脚本,用来在安装前对系统进行检查,确认系统是否具备了编译软件所需的各种条件。以C语言为例,confugure脚本会确认系统是否有编译软件所需的编译器,以及所需的各种头文件和库等。
如,
./configure --prefix=/usr
意思是将软件安装在/usr
目录下面,可执行文件就会安装在/usr/bin
下(而不是默认的/usr/local/bin
),而资源文件就会安装在/usr/share
下(而不是默认的/usr/local/share
下)。
有一些软件还可以加上--with、--enable、--without、--disable
等参数对编译加以控制,可以通过./configure --help
来查看详细的说明。
- make
这一步就是编译。不加参数的make的作用就是从当前目录下的Makefile
文件中读取指令,对源代码进行编译。
- make install
这条命令用来进行安装,这一步一般需要有root权限(因为要向系统写入文件)。光编译的源码还不够,编译生成的二进制文件还和源码呆在同一个文件夹内,我们需要将它们放到具体的目录内才能正确地运行。至于放到哪个目录下也是通过makefile文件的指令来确定的。install不是make的参数,而是在makefile(Makefile)文件中有向install:
这样的语句。如果用make install,那么执行install:后面的语句。
(以下来自openkeeper-cli
的makefile文件)
关于makefile文件:
『makefile是用于自动编译和链接的。一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但不是所有文件都需要重新编译,makefile能够记录文件的信息。决定在链接的时候需要重新编译哪些文件。在类unix系统下,makefile是与make命令配合使用的。』
make与automake的关系
make 是一个工具程序,经常读取makefile文件,用于自动化构建软件;
automake是一种编程工具,可以产生供make程序使用的makefile。