各个发行版的linux内核都是一样的,但是为什么很多软件、库(例如OpenCV)安装的时候都需要在本地编译源码,产生二进制代码然后运行,而不是直接发布二进制代码?
因为不同的发行版乃至不同的版本库不同 而应用程序往往也会依赖很多别的库 发布源码比较省事
而且LINUX下也有使用源码编译然后使用这个软件的传统 这让人感觉更安心(比如我 UBUNTU源里没有的东西 我就更乐意从源码编译安装)
当然一个流行的项目往往自己或者第三方会发布针对不同发行版的安装包 乃至软件源(提供源比较方便 一次安装 更新什么都由系统包揽了)
还有些给第三方软件使用的帮助其向用户提供软件源的服务 例如UBUNTU PPA或者
openSUSE Build Service 开发者可把源码提交上去 那边自动给编译并提供源给客户
最后是广告
gdbt - GDB for KGTP 你可以看到我在这里向 客户提供了
Ubuntu CentOS, Fedora, Mandriva, RHEL, SLE, openSUSE 的源 还提供静态编译好的二进制源码(用来覆盖其他系统) 还提供了源码下载编译的步骤
Ubuntu CentOS, Fedora, Mandriva, RHEL, SLE, openSUSE 的源 还提供静态编译好的二进制源码(用来覆盖其他系统) 还提供了源码下载编译的步骤
|
#5 得分:10
回复于: 2010-02-26 09:00:08
|
这是由于Linux系统的程序相互信赖造成的。比如某个程序依赖于其它一些库,而且版本也有要求,要想直接用,需要在编译时对信赖关系进行调整。./configure就是起这个作用的。
RPM包,DEB包是二进制了,也有依赖,一般情况下,二进制包只对应着特定的发行版。因为,在特定的发行版中,库之间的信赖关系是固定的。比如想把redhat5.2的rpm包安装到fedora上,就不一定成功。
初学者可以使用某个发行版,就不需要自己编译程序了。直接从官网上下载二进制的发行包就行了。有的发行版有在线安装软件的功能,比如redhat和fedora用的yum,unbuntu用的apt-get等
|
#5 得分:10
回复于: 2010-02-26 09:00:08
|