ubuntu下的软件安装
linux下支持的软件格式比较多,安装方式也很多样,这里进行一个小总结……
1.deb包
这时最方便的一种,直接在软件中心,或apt-get,就解决问题了~它会解决所有依赖关系,各种设置等……一般的deb包(包括新立得或者apt-get下载的)都在/usr/share。自己下载的压缩包或者编译的包,有些可以选择安装目录,一般放在/usr/local/,也有在/opt的。
apt-get常用命令:clean , check , autoclean , update , upgrade , autoremove , remove , search , show , install , dist-upgrade,depends ,source
2.源码包
这是最通用的包安装方式,一次编写到处编译……移植性最好,其安装稍显繁琐,但不是你想的那么复杂!!
安装的具体步骤:
CODE:安装之前最好阅读下源码目录下的README或者INSTALL文件
$ tar zxvf XXXX.tar.gz (or tar jxvf XXXX.tar.bz2) 解压缩
$ cd XXXX
$ ./configure 运行configure脚本,对当前的工作平台做一些依赖性检查,比如编译器是否安装,连接器是否存在 ./configre --help,获得帮助信息
$ make 根据Makefile中的规则调用合适的编译器编译所有与当前软件相依赖的源码,生成所有相关的目标文件,最后再使用链接器生成最终的可执行程序
# make install 将可执行程序安装到正确的位置
$make clean 安装完成后用来清理临时文件
在这里我尝试着解释一下上面这些步骤存在的理由,从C语言的角度来说,一个程序从源码到正确生成相关的可执行文件,下面这些部分必不可少:源文件,编译器,汇编器,连接器,依赖库,通过上面几个步骤,朋友们应该已经知道,真正执行编译链接操作的步骤只有一个(make),那其他步骤存在的理由何在?
有一点是肯定的,我在自己的电脑上使用C语言写一些自娱自乐的小程序,也没有用到"configure or make install"之类的命令,顶多自己写个Makefile管理源文件的依赖关系,可是软件开发者不同,他必须考虑到软件的可移植性,他开发的软件不能仅仅就在他自己的pc上跑吧?不同的平台可能连硬件体系结构都不同,这样就导致了Makefile的不可移植性,为了解决这个问题,开发者通常使用autoconf之类的工具生成相应的configure脚本,而configure脚本就是用来屏蔽相应的平台差异,从而正确生成Makefile文件,然后make再根据configure的劳动成果(Makefile)完成编译链接工作.
至于"install or clean or uninstall",也只是对应着Makefile文件中不同的规则,关于Makefile的详细信息,朋友们可以自行查阅相关的文档.