.. index:: single: 构建:make cycle 构建:make cycle ---------------------- make cycle 是编译器的前置,并且至少构建三次 rtl 和编译器。 保证工作顺利的前提是使用该系列最新版的编译器 [#CLEANING1]_。如果在构建 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_ 输出,所以将它传递给管道文件是明智的。 示例 [#CLEANING2]_: .. code-block:: bash :linenos: # 转到编译器目录(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 .. [#CLEANING1] 例如,对于1.9.x 系列,尽管1.9.6和1.9.8可能会工作,但能正常工作的是1.0.10编译器! .. [#CLEANING2] 下面示例中,以#开头的是行注释,不需要输入它们。