fpc:PPU来源:[unit] .pas不可用

时间:2019-05-09 20:32:45

标签: pascal freepascal

我正在尝试在macOs Mojave上使用适用于x86_64的Free Pascal Compiler版本3.0.4 [2018/10/02]编译以下最小的FreeVision程序。

Program VeryShort;
Uses App;

Var MyProgram: TApplication;

Begin
    MyProgram.Init;
    MyProgram.Run;
    MyProgram.Done;
End.

但是,我收到以下错误消息:

$ fpc veryshort.p
Free Pascal Compiler version 3.0.4 [2018/10/02] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Darwin for x86_64
Compiling veryshort.p
PPU Loading /usr/local/Cellar/fpc/3.0.4_1/lib/fpc/3.0.4/units/x86_64-darwin/fv/app.ppu
PPU Source: app.pas not available
PPU Source: platform.inc not available
Recompiling App, checksum changed for Menus
veryshort.p(2,6) Fatal: Can't find unit App used by VeryShort
Fatal: Compilation aborted
Error: /usr/local/bin/ppcx64 returned an error exitcode

编译器找到了单位文件app.ppu,所以我不明白为什么它要重新编译它?

1 个答案:

答案 0 :(得分:2)

使用编译器的-vut选项,我发现fpc拾取了一个不正确的单元作为依赖项:在两个位置有一个menus.ppu单元:

  • lib/fpc/3.0.4/units/x86_64-darwin/fv/menus.ppu
  • lib/fpc/3.0.4/units/x86_64-darwin/univint/Menus.ppu

很遗憾,univintfv之前的单位搜索路径上,所以选择了错误的单位。

我通过在命令行上显式指定FreeVision的路径解决了该问题:这样,首选FreeVision单元,而仍然可以找到所需的univint单元:

$ fpc -Fu/usr/local/lib/fpc/3.0.4/units/x86_64-darwin/fv veryshort.p

请注意,-Fu与路径之间必须不要。路径名称可能需要适应fpc版本,目标体系结构和操作系统。