很多网站都会提供编译好的release版本的程序,同时提供程序源码下载的入口,供用户下载之后编译的。

二者有什么区别吗。


例如 TensorFlow. 使用 Anaconda 或者 pip 安装源安装 tensorflow 或者 tensorflow-gpu 并不能包含一些特性(比如 CPU 训练加速)。自己编译的话可以选择包含这一功能。

Vim 也可以通过自己编译来 enable 一些插件语言的支持,比如 Python, Ruby.

Nginx 也可以通过自己编译来提高性能。
这个区别不是很明显吗?就像做菜。一个是直接把做好的菜端给你,拿起筷子就能吃。另一个是给你食材和菜谱,自己洗自己烧,然后才能吃。

有些软体的特定功能是需要编译期开启的。比如选择链接不同的底层库等等。

另外就是网站提供的编译好的二进位通常使用的是最通用的编译选项。为保证通用性没办法开很高级的处理器支持。但你自己编译可以让编译器针对你自己的CPU进行优化,使用你CPU支持的所有指令集来优化代码。这样会提升一些性能。


可执行文件有些功能不是预设就有的。源码编译可以通过选项来添加功能,可以根据不同需要定制化


直接下载release包对程序员来说透明度不够,安装下来隐藏了太多东西,用源码编译能让程序员了解更多过程,更大的掌控感,比如大多数工程都提供编译选项进行不同优化,而且使用项目假如出了问题,方便查找(概率较低)。

主要区别在与编译选项,一般开源项目的编译选项都挺多,使用release您就不用考虑这些了,使用源代码编译就可以通过各种编译选项定制自己的版本。

当然,刚牛逼的是还可以修改代码编译自己的特属版本。


因为操作系统啊,release版可能只针对特定的操作系统编译的。而源代码可以自己去编译对应操作系统的程序。


推荐阅读:
相关文章