Linux 源码的编译安装和卸载

  • Post author:
  • Post category:linux




正常的编译安装/卸载

源码的安装一般由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

选项时的目录结构)。