























前两天海南的朋友在windows 11用我的工具编译fpc时出错:
Error: Identifier not found "FpcBaseRecordType" systemh.inc(584,49) Fatal: Cannot find system type "FPCENUMVALUEOBTAINABLE". Check if you use the correct run time library.
为排除工具引起的问题,使用命令行进行编译也同样出错。
G:\QFLazarus\fpcbootstrap\x86_64-win64\make.exe FPC=G:\QFLazarus\fpcbootstrap\x86_64-win64\ppcx64.exe FPCDIR=G:\QFLazarus\fpcsrc PREFIX=G:\QFLazarus\fpc INSTALL_PREFIX=G:\QFLazarus\fpc INSTALL_SOURCEDIR=G:\QFLazarus\fpcsrc INSTALL_BASEDIR=G:\QFLazarus\fpc INSTALL_UNITDIR=G:\QFLazarus\fpc\units\x86_64-win64 INSTALL_BINDIR=G:\QFLazarus\fpc\bin\x86_64-win64 INSTALL_LIBDIR=G:\QFLazarus\fpc\lib INSTALL_SHAREDDIR=G:\QFLazarus\fpc\share install

查找FpcBaseRecordType和FPCENUMVALUEOBTAINABLE所在单元,发现和java/jvm有关:


编译出错时,检查fpcsrc/compiler生成的ppc.exe有点奇怪-->"for jvm":

按正常的编译,ppc理应是当前CPU(x86_64)才对。
怀疑与系统的环境变量有关,经查找系统变量,真有JVM这个变量,为验证,将这个JVM环境变量删除并重启电脑,再次用命令行编译,这次编译成功了。
虽然删除jvm后能编译,但这样就破坏了原有的环境变量。
继续寻找理想的解决方案:
在fpcsrc/compiler/Makefile里找到:

删除ifdef JVM这3行,编译也成功。
当然,不能为了编译去修改Makefile,但从这里发现PPC_TARGET,能不能在命令行加上PPC_TARGET=x86_64呢?
立即行动,使用的命令行和前面的一样,只增加PPC_TARGET=x86_64这个参数:
G:\QFLazarus\fpcbootstrap\x86_64-win64\make.exe FPC=G:\QFLazarus\fpcbootstrap\x86_64-win64\ppcx64.exe FPCDIR=G:\QFLazarus\fpcsrc PREFIX=G:\QFLazarus\fpc INSTALL_PREFIX=G:\QFLazarus\fpc INSTALL_SOURCEDIR=G:\QFLazarus\fpcsrc INSTALL_BASEDIR=G:\QFLazarus\fpc INSTALL_UNITDIR=G:\QFLazarus\fpc\units\x86_64-win64 INSTALL_BINDIR=G:\QFLazarus\fpc\bin\x86_64-win64 INSTALL_LIBDIR=G:\QFLazarus\fpc\lib INSTALL_SHAREDDIR=G:\QFLazarus\fpc\share PPC_TARGET=x86_64 install
2026-05-20 更新:用JVM= 替代PPC_TARGET,注意JVM=后面是空格,不要填CPU:
G:\QFLazarus\fpcbootstrap\x86_64-win64\make.exe FPC=G:\QFLazarus\fpcbootstrap\x86_64-win64\ppcx64.exe FPCDIR=G:\QFLazarus\fpcsrc PREFIX=G:\QFLazarus\fpc INSTALL_PREFIX=G:\QFLazarus\fpc INSTALL_SOURCEDIR=G:\QFLazarus\fpcsrc INSTALL_BASEDIR=G:\QFLazarus\fpc INSTALL_UNITDIR=G:\QFLazarus\fpc\units\x86_64-win64 INSTALL_BINDIR=G:\QFLazarus\fpc\bin\x86_64-win64 INSTALL_LIBDIR=G:\QFLazarus\fpc\lib INSTALL_SHAREDDIR=G:\QFLazarus\fpc\share JVM= install
这次编译成功了:

经过两天的排查终于解决了这个问题。
特别说明:这次是和海南的朋友一起排查的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。