pascal - 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
,所以我不明白它为什么要重新编译它?
解决方案
使用-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 版本、目标架构和操作系统。
推荐阅读
- angular - Angular 8:为 api base url 设置生产环境
- r - 通过闪亮应用程序中的列名组合子集数据框
- android - 约束布局包括问题
- java - 我们可以使用 JMX 监控 Cassandra 模式的分歧吗
- python - Python 和 Mysql 元组搜索
- python - 在 Python Selenium 中等待页面对象模型不起作用
- python - 为什么我的过滤器在 python SQLAlchemy Flask 上不起作用?
- windows - Flutter 在命令行中工作,但在 CMDER 中不工作
- python - 使用命令提示符启动 pyspark 时遇到问题
- java - 如何在 gradle 中传递 git 存储库凭据 - build.gradle