开始之前

要轻松编译编译器,最好保留以下目录结构(假设 /pp/src 是项目根目录,也可能不同):

/pp/src/Makefile
       /makefile.fpc
       /rtl/linux
           /inc
           /i386
           /...
       /compiler

当使用 makefile 时,必须使用上面的目录结构。

编译器和 RTL 源这样的优雅压缩:解压两个在同一目录(上面的 /pp/src)中时,会产生上述目录结构。

有两种方法可以开始编译编译器和 RTL。必须使用这两种方式,根据需要再进行选择。通常在编译编译器之前,必须先编译 RTL,然后使用当前编译器编译编译器。在某些特殊情况下,必须先使用先前编译的 RTL 编译编译器。

如何确定先编译哪个?一般来说,答案是先编译 RTL。此规则有两个例外:

  1. 第一种情况是,RTL 中某些内部例程发生了变化,或者出现了新的内部例程。由于 OLD 编译器不知道这些已更改的内部例程,它将发出基于旧版编译器的 RTL 函数调用,这是不正确的。结果将不会链接,否则二进制文件将给出错误。

  2. 第二种情况是,当编译器需要知道某些内容添加到 RTL 时:如,一个新的默认汇编程序机制。

如何判断某种情况是否已经发生?除非通过 Free Pascal 团队邮件列表,否则无法知道。在第一次编译 RTL 时无法重新编译器,然后尝试另一种方式。