发布时间:2014-09-05 17:15:03作者:知识屋
摘要:
1:windows仅支持x86 x64两个硬件平台, 而linux的软件通常要支持 x86,arm,x64一起其他很多硬件平台,所以,通过./configure源码按照可以跨平台。君不见对于32位和64位,一般的软件都提供了两个安装版本,至少启动是不一样的!
2:通过./configure命令加上合理参数,可以不编译不需要的模块,而windows下即使选择不按照某个模块,其主程序的代码也是编译好支持加载多个模块的,只是没有找到模块时不加载罢了。
3:对于依赖其他程序提供的公共模块,在Windows下是必须在C:Windows/System32 (也可是设置环境变量PATH来实现)
linux下./configure的参数指定你电脑的依赖的其他模块(比如libiconv)安装路径是多少
4:如果不要求跨那么多的硬件平台,那么对于ubuntu、Fedora系统,软件是可以通过双击安装的!
5:我们畅想一下,如果QQ有tar.gz源码版发布,那么我希望的安装命令是:
cd qq2012-beta2/ ./configure --without-ad --without-qqshow --without-popnews --without-qzone --with-ipaddress --with-showip make;make install
正文:
看最近cnbeta的评论,有一位仁兄矢志不渝的重复“世界上最差的系统就是linux,双击不能安装软件”,而对于该评论的观点众多,但是真正正确的确极少。综合来看,广大cber尤其是喜欢评论的cber对Linux理解的还比较少,而且很多都是跟Windows做比较(当然这里我承认高手也大有人在),所以我想在这里有必要说一下为什么Linux到现在也不能做到双击安装软件。
首先要说一下,很多Linux的发行版例如Ubuntu或者CentOS、Fedora等,已经早就可以双击安装自己发行版的安装包了,例如deb、rpm等。
那么为什么现在大部分软件还是需要下载一个tar.gz然后./configure/make/make install繁琐的命令安装呢?
其实,Linux下跟Windows的软件发布有一个最大的不同就是Linux下大部分软件都是开源的,只提供源码下载,不提供编译好的二进制下载。所以,上面的三个命令实际上是编译一个软件,然后拷贝到系统对应目录,准确来说不是安装。
但是为什么非要这三个命令,而不是双击之后自动执行上述三个命令呢?
主要还是跨平台和定制化的考虑。我们知道Linux发行版众多,Linux支持的平台也很多,从使用最多的x86到arm,solaris等,所以这个./configure脚本可以支持很多编译参数,从而让软件支持几乎所有的硬件平台。
而Windows下,由于几乎所有软件都是编译好的二进制打包发布,所以软件要么是32位版本,要么是64位版本不能通用的。好在Windows目前只支持x86和x64两个硬件平台,假若以后Windows支持其他平台,那么我们日常软件的版本区分就要更多了。而Linux下只要发布一个源码包,你用户是什么硬件平台自己编译好了。
另外稍微学过软件工程的都知道,软件开发都是模块化的,通过./configure命令加上合理参数,可以不编译不需要的模块,比如最常用的php,自带几十个模块,通常我们需要哪个编译哪个好了。
有人可能说Windows安装软件也能选择性安装,我可以不安装我不需要的模块。
其实,Windows就算你不安装你选择的模块,那也只是这个模块不安装。而主程序的模块访问是编译好的,他只不过能自动判断这个模块不存在就不加载罢了。
另外,Linux很多模块是通用的,这就是依赖关系,举例来说要用php的iconv功能,就需要系统安装libiconv库,而不同的电脑的libiconv库安装路径不同,所以需要通过./configure的参数指定你电脑的libiconv安装路径是多少,php才能顺利编译通过。Windows则是必须在C:WindowsSystem32下,可定制化太差了。
再说一下make命令。make命令就是根据刚才./configure的配置参数,来把源码编译成二进制文件,放到当前目录,而不是复制到系统目录。为什么不能把make和make install放在一起呢?
因为有些时候,我们只需要一个软件包里面的某个动态链接库,而不是整个程序。比如我们经常需要lighttpd中的spawn-fcgi,所以我们不必安装lighttpd,而是直接编译完,得到其中的spawn-fcgi即可。
最后,make install就是把编译好的二进制文件和链接库、配置文件等复制到系统的各个目录即可,安装完成。
说道这里,可能有些网友根本没看上面文字,就说:普通用户不需要知道这么多,他们就需要知道怎么用就行了。是的,话说回来了,这些人如果不用Windows,完全可以尝试Ubuntu或者Fedora,这两个发行版都可以双击安装程序。但是缺点就是无法深度定制。
我们畅想一下,如果QQ有tar.gz源码版发布,那么我希望的安装命令是:
cd qq2012-beta2/ ./configure --without-ad --without-qqshow --without-popnews --without-qzone --with-ipaddress --with-showip make;make install
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能