编译特定版本的 freeBSD 实用程序

Compiling a specific version of a freeBSD utility

我想从源代码编译 运行 特定版本的 FreeBSD 实用程序。

例如,我下载了以下实用程序的存储库:https://svnweb.freebsd.org/base/stable/9/sbin/routed/

但是,当我 运行 make 命令时,出现以下错误:

"../Makefile.inc", line 3: Cannot open ../Makefile.inc
make: fatal errors encountered -- cannot continue
*** [all] Error code 1

有人能指出我正确的方向吗?

您需要下载整个 源代码树。构建系统依赖于树中不同位置的片段。那么;

  • 解压 /usr/src
  • 中的源代码
  • cd /usr/src/sbin/routed
  • make && make install

看起来你想要 9-stable 分支?如果你有可用的颠覆,你可以这样做:

rm -rf /usr/src/
svn co svn://svn.freebsd.org/base/stable/9 /usr/src

(根据您的 FreeBSD 版本,svn 也可能称为 svnlite)另请参阅 handbook.

在我的机器上,完整的 /usr/src 树是 2445 MiB,包括 .svn 目录。

编辑: 注意,如果程序依赖于系统调用、库函数或其他在 FreeBSD branch/version 中引入的功能,它将无法运行在较旧的 branches/versions.