在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的写法就不写了,了解下就可以了

最新文章

  1. 20169212《Linux内核原理与分析》第十一周作业
  2. plsql导入excel时报错:ORA-01036: 非法变量名/编号
  3. 【深入ASP.NET原理系列】--ASP.NET页面生命周期
  4. http的六种请求方法
  5. Openresty 安装教程
  6. [POI 2008]Mafia
  7. jackson set properties to default value (取消让jackson 赋予默认值)
  8. python27+django数据库配置常见问题
  9. URL方式访问Hadoop的内容
  10. [Oracle]日期和毫秒转换(Date->int)
  11. scroll抖动问题
  12. STM32基础问题分析——PWM配置
  13. spring环境搭建
  14. 【转】Linux中包管理与定时任务
  15. POJ - 1266 -
  16. openx _金额
  17. Oracle 11g的Deferred Segment Creation
  18. 利用MSSQL对不经常使用的表进行依赖缓存
  19. cas 退出后跳转指定页面
  20. [BZOJ3992][SDOI2015]序列统计(DP+原根+NTT)

热门文章

  1. MongoTemplate 使用 _id 查询
  2. mysql常用引擎
  3. Beta冲刺博客
  4. lua 模块与包(五)
  5. ######【Python】【基础知识】【一些未知的知识点】######
  6. Nginx04---实现直播
  7. Python 解leetcode:3. Longest Substring Without Repeating Characters
  8. SVN常用命令--Mac端【转载】
  9. Block Breaker HDU - 6699(深搜,水,写下涨涨记性)
  10. springcloud注解