首页 > 解决方案 > fpc:PPU 来源:[单位].pas 不可用

问题描述

我正在尝试使用 Free Pascal Compiler 版本 3.0.4 [2018/10/02] 为 macOS Mojave 上的 x86_64 编译以下最小的 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,所以我不明白它为什么要重新编译它?

标签: pascalfreepascal

解决方案


使用-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.

不幸的是,univint在之前的单元搜索路径上fv,所以选择了错误的单元。

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

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

请注意,路径之间不能有空格。-Fu路径名可能需要适应 fpc 版本、目标架构和操作系统。


推荐阅读