从源代码构建工具/库的优点是什么?

Dou*_* T. 8 compiling source package-management

通过从源头构建,你有什么好处吗?代码是否更好地针对您的硬件架构进行了优化?总的来说,它优化得更好吗?

为什么有人会选择从源代码构建而不是使用像 APT/yum 这样的包管理系统?如果有某种优化收益何时超过包管理系统的好处?

Sha*_*off 11

从源代码构建提供了以下选项,这些选项在使用二进制包管理器的版本时不可用。

从源代码编译允许您:

  • 使用特定于处理器的优化
  • 使用最新版本
  • 了解编译和链接的工作原理(来自@mattdm 的建议)
  • 修复错误,开发工作
  • 设置编译时选项(例如在 vim 中包含 X 特性)

  • 我要补充的一件事是:了解更多关于幕后发生的事情。这本身就值得。 (5认同)

Bru*_*ger 7

我最近做了这件事。

我在 Slackware 11.0 linux 系统上从源代码编译了 openssl-1.0.something。我想修补密码登录的事情,在登录失败时暂停 7 秒,以便缓和那些烦人的中文 ssh 密码猜测者。

我在同一个 Slackware 11.0 系统上编译了 Apache httpd 2.2.17,因为它带有 Apache 2.0.something,我想使用来自另一个系统的 2.2.x httpd.conf。

想到这里,我也为同一个系统编译了Alpine 2.0(email客户端,pine后续)。为什么是 Slackware 11.0?它运行在大约 2003 年的带有英特尔“Brookdale”显卡的机器上,而任何后来的 Slackware 都不支持记录不完整的英特尔显卡。

在另一台机器上,我从github拉取了TI ACX111无线芯片的支持,并编译了一个新的驱动程序,让我可以使用9美元的无线网卡。

我还习惯性地重新编译 Linux 内核,使它们特定于它们运行的​​机器。

所以就我而言,这是定制、硬件支持和“仅仅因为”的各种原因。

鉴于我们对统一人群中流行病学的了解 (http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf) 为什么不是每个人都在自己的系统上从源代码编译,无论他们选择的编译时选项?这将形成一个更加抗病毒和蠕虫的群体。