.. index:: single: 编译编译器开始之前 开始之前 ==================================== 要轻松编译编译器,最好保留以下目录结构(假设 /pp/src 是项目根目录,也可能不同): .. code-block:: bash /pp/src/Makefile /makefile.fpc /rtl/linux /inc /i386 /... /compiler 当使用 makefile 时,必须使用上面的目录结构。 编译器和 RTL 源这样的优雅压缩:解压两个在同一目录(上面的 /pp/src)中时,会产生上述目录结构。 有两种方法可以开始编译编译器和 RTL。必须使用这两种方式,根据需要再进行选择。通常在编译编译器之前,必须先编译 RTL,然后使用当前编译器编译编译器。在某些特殊情况下,必须先使用先前编译的 RTL 编译编译器。 如何确定先编译哪个?一般来说,答案是先编译 RTL。此规则有两个例外: 1. 第一种情况是,RTL 中某些内部例程发生了变化,或者出现了新的内部例程。由于 OLD 编译器不知道这些已更改的内部例程,它将发出基于旧版编译器的 RTL 函数调用,这是不正确的。结果将不会链接,否则二进制文件将给出错误。 #. 第二种情况是,当编译器需要知道某些内容添加到 RTL 时:如,一个新的默认汇编程序机制。 如何判断某种情况是否已经发生?除非通过 Free Pascal 团队邮件列表,否则无法知道。在第一次编译 RTL 时无法重新编译器,然后尝试另一种方式。