参考:https://blog.csdn.net/LEON1741/article/details/85008857
1、configure命令
这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 查看详细的说明帮助。
2、make
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。
可能遇到的错误:make *** 没有指明目标并且找不到 makefile。问题很明了,没有Makefile,怎么办,原来是要先./configure 一下,再make。
3、make install
这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。
--------------------------------------------------------------------
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。安装成功的源码就是所谓的可执行文件,在你不需要的时候,也是可以删除/卸载(remove/uninstall)的。下面就逐个进行分析:
配置命令就是configure命令。一般来说,configure文件是位于源码根目录下的一个可执行的脚本文件,它有很多选项,而且不同软件的选项都不完全一致。可以在待安装的源码目录下使用命令./configure –help可以输出详细的选项列表。
其中有一个通用的选项,叫做–prefix选项,目的是配置安装目录。
如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。
如果你想统一存放,或者想指定到另外的一个路径下,你可以人工配置–prefix参数,如:
./configure --prefix=/usr/local/test
那么,安装后的所有资源文件都会被放在/usr/local/test目录中,不会分散到其他目录。
另外,使用–prefix选项的另一个好处是方便卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净。
配置完毕之后,一般都会提示你,直接运行make命令进行编译。此时你照做就好,程序就会开始自动编译。
有一个要注意的就是,考虑到目前的计算机一般都是多核的,如果你想人工加快程序的编译速度,可以手工指定一个make命令的一个参数“-j8”或者“-j16”,后面的数字表示的就是用几个核进行编译,数字越大,编译速度越快。当然,要说明的是,这里的编译速度与内核的个数,并不是成正比的。而且,具体多少个任务同时执行为佳,还需要根据具体的机器配置,任务数太多,反而效果不好。
比如我自己做过的一个linux内核的编译过程测试,使用不同的参数编译的时间如下:
用make:40分16秒;
用make -j4:23分16秒;
用make -j8:22分59秒;
另外,这个方案不是完全没有弊端的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。
编译完成之后,就是安装。这里的安装,其实就是把编译出来的可执行文件,以及一堆的头文件和依赖库,以及文档资料等,按照linux系统约定的规则,拷贝到你事先指定的目录下去。所以,与其叫安装,其实就是一个拷贝的过程。
同样,这里也有一点要说明的是,很多时候,手册或者提示信息里都只是告诉你,执行“make install”命令来进行安装。然而,你执行了这个命令之后,往往会遇到一些错误的提示。经过一番排查之后,你会发现,就是因为权限不够,导致文件拷贝失败。于是,我建议你,最好养成一个习惯,每次在“make install”的命令前加上sudo的权限,如下:
sudo make install
当然,要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是Makefile文件有uninstall命令。
而如果你安装时没有配置–prefix选项,源码包也没有提供make uninstall命令,则可以通过以下方式来卸载:
找到make install之后产生的这个文件install_manifest.txt
里面有安装的所有东西的路径,使用下述命令逐个删除它们即可。
cat install_manifest.txt | sudo xargs rm