构建:make cycle

make cycle 是编译器的前置,并且至少构建三次 rtl 和编译器。

保证工作顺利的前提是使用该系列最新版的编译器 1。如果在构建 FPC 仓库时遇到问题,并且你没有使用最新版本编译器,请先使用最新发布的编译器。可以指定编译器的名称(见下文),因此建议以某个名称保存发布的编译器(我将在本教程中使用 ppcrel)。

make cycle 需要编译3次RTL和编译器:

第1次编译 RTL,由于我们只从构建编译器开始,因此必须先构建一个新的 RTL 才能链接程序。

第1次编译编译器,创建一个新的编译器,但是,新的编译器仍然由发布编译器编译,因此在此可执行文件中尚未激活更新的优化和更改。因此,必须重建 RTL 和编译器。

第2次编译RTL,因为我们要重建和……

第2次编译编译器。为了确保编译器是正确的(每次运行时将相同的程序编译为相同的可执行文件),编译 RTL 和编译器……

第3次编译 RTL……

第3次编译编译器,在构建编译后,对比第2个编译器和第3个编译器,确定它们是否相同。否则,将再次编译所有内容。(对于一些罕见的安全问题)

只需在编译器目录中键入 make cycle 即可运行整个过程。如果要使用备用编译器,请使用 PP=[full/path/to/]<编译器> 指定它。使用 PP= 选项时,请在 PATH 中使用编译器的绝对路径,而不是相对路径。使用相对路径通常不起作用,因为在编译过程中,make 程序将更改目录。如果你尝试在没有完整安装的情况下进行引导,有时需要指定FPC=[full/path/to/]<编译器>。

可以使用 OPT=<选项> 添加其它编译器选项,常用选项是打开行信息信息(-gl),并增加详细级别(-va)。因为-va产生一个 _lot_ 输出,所以将它传递给管道文件是明智的。

示例 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  # 转到编译器目录(unix下)
  cd /fpc/fpc/compiler
  # 转到Windows下的编译目录
  cd /d d:\repo\fpc\compiler
  # 执行 make cycle:
  make cycle
  # 在系统路径中搜索启动编译器 make cycle PP=ppcrel
  # 使用带有(unix)绝对路径启动编译器
  # 并启用行信息和调试
  make cycle PP=/fpc/startcompilers/ppcrel OPT=gl
  # 在此执行时将显示大量信息,并将其重定向到文件。
  make cycle OPT= -va >cycle.log
1

例如,对于1.9.x 系列,尽管1.9.6和1.9.8可能会工作,但能正常工作的是1.0.10编译器!

2

下面示例中,以#开头的是行注释,不需要输入它们。