在 Linux 系统中安装软件的其中一种: 源码安装的方法是, 先输入./configure, 然后输入 make, 最后 make install. 或许有人留意到没有, 这些软件的根目录中开始是没有 Makefile 的, 在执行了./configure 后会生成了很多奇怪名字的文件.
configure 是一个脚本, 它能设置源程序来适应各种不同的操作系统平台, 并且根据不同的系统来产生相应的 makefile 文件, Makefile 规定了用什么编译器, 编译参数等信息. 从而可以使你的源代码能在不同的操作系统平台上被编译出来. 比如它会检测你是不是有 CC 或 GCC.
可以通过在 configure 后加上参数来对安装进行控制, 比如代码:
./configure --prefix=/usr
上面的意思是将该软件安装在 /usr 下面, 执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin), 资源文件就会安装在 /usr/share(而不是默认的 / usr/local/share.
如果你安装时候指定的路径为:
--prefix=/usr/local/XXX, 那么卸载的时候只需要把 XXX 这个文件夹删除即可!!!!!, 因为该软件安装的所有文件都是放置在 XXX 这个文件夹. 但如果你进行源码包安装的时候没有指定位置 (默认值一般为 / usr/local/), 或指定的位置为 --prefix=/usr/local, 则这时候你安装软件生成的文件将分别存储在 / usr/local / 里面的 bin,lib 或 ect 等目录中, 这时候卸载起来就相对麻烦一点了.
可以通过 ./configure --help 察看详细的各个参数的说明.
make install 是用来安装的, 它也从 Makefile 中读取指令, 安装到指定的位置. 这条命令来进行安装 (当然有些软件需要先运行 make check 或 make test 来进行一些测试), 这一步一般需要你有 root 权限 (因为要向系统写入文件), 以通常得用 sudo make install..
当我们在使用 make 命令时, 常常会在 make 后面加上其他单词, 比如 check,install,installcheck... 这些单词都是 make 的参数, 我们称之为 "目标 (targets)".
最常见的几个目标:
make all: 编译程序, 库, 文档等 (等同于 make)
make install: 安装已经编译好的程序. 复制文件树中到文件到指定的位置
make unistall: 卸载已经安装的程序.
make clean: 删除由 make 命令产生的文件
make distclean: 同时删除./configure 和 make 产生的临时文件
make check: 测试刚刚编译的软件 (某些程序可能不支持)
make installcheck: 检查安装的库和程序 (某些程序可能不支持)
make dist: 重新打包成 packname-version.tar.gz
上面这些很多人都知道, 但是 configure 这个脚本是从哪来的呢
它其实是由 autoconf 和 automake 两个工具来生成的. 和 cmake 一样用类似的方式最后生成 makefile, 不过 cmake 却简约很多
automake 的写法就不写了, 了解下就可以了
来源: http://www.bubuko.com/infodetail-3192302.html