我正在尝试在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
,所以我不明白为什么它要重新编译它?
答案 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
。很遗憾,univint
在fv
之前的单位搜索路径上,所以选择了错误的单位。
我通过在命令行上显式指定FreeVision的路径解决了该问题:这样,首选FreeVision单元,而仍然可以找到所需的univint
单元:
$ fpc -Fu/usr/local/lib/fpc/3.0.4/units/x86_64-darwin/fv veryshort.p
请注意,-Fu
与路径之间必须不要。路径名称可能需要适应fpc版本,目标体系结构和操作系统。