正常的编译安装/卸载
源码的安装一般由3个步骤组成:
-
配置(
configure
) -
编译(
make
) -
安装(
make install
)。
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 uninstall
,但前提是
Makefile
文件有
uninstall
命令。
make install PREFIX=path
这里
PREFIX
必须大写,其实绝大部分情况下
make install
都不能再指定
PREFIX
了,因为大部分程序都会
configure
时得到的
prefix
写入
config.h
,然后在编译时编译到可执行文件内部,以便在执行时读取资源文件等。
这样在编译完毕后,就不能再修改
prefix
了。只有运行时不需要资源文件的小工具,才可能在安装的时候随意选择
PREFIX
,或者具有
loader
的大程序,在执行时通过
loader
传入路径……
关于卸载
如果没有配置
--prefix
选项,源码包也没有提供
make uninstall
,则可以通过以下方式可以完整卸载:
一个临时目录重新安装一遍,如:
$ ./configure --prefix=/tmp/to_remove && make install
然后遍历
/tmp/to_remove
的文件,删除对应安装位置的文件即可(因为
/tmp/to_remove
里的目录结构就是没有配置
--prefix
选项时的目录结构)。