You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSYS2环境编译PostgreSQL执行make报lwlocknames.txt解析错误如何解决

报错原因

你遇到的报错是generate-lwlocknames.pl脚本校验lwlocknames.txt格式失败触发的,脚本要求非注释、非空行的内容必须严格匹配[字母/数字/下划线] [数字]的正则格式,报错指向文件第8行不符合规则,常见触发场景有三个:

  1. 源码包损坏,lwlocknames.txt第8行出现格式异常,比如存在多余特殊字符、空格、缩进错误
  2. 手动修改源码时误改了lwlocknames.txt的内容
  3. MSYS2环境下Windows换行符(CRLF)和Linux换行符(LF)不兼容,脚本执行chomp时仅移除了末尾的LF,残留的不可见CR字符导致正则匹配失败

修复方案

  • 先检查lwlocknames.txt内容:打开源码路径下的/c/builds/source/src/backend/storage/lmgr/lwlocknames.txt,查看第8行,PostgreSQL 11.8官方版本该位置的内容为WALWriteLock 4,如果内容不符直接修正即可,确保非注释行都是锁名称 数字的格式,无多余字符。
  • 若内容正常,大概率是换行符兼容问题,在MINGW64 shell中执行命令dos2unix /c/builds/source/src/backend/storage/lmgr/lwlocknames.txt将文件换行符转换为LF格式,再重新执行make即可。
  • 若以上操作无效,先执行make clean清理之前的编译缓存,再重新编译;如果还是报错,直接下载官方干净的PostgreSQL 11.8源码包重新解压编译,避免未知改动导致的问题。
  • 如果你编译的目的只是获取Windows环境下编译PostgreSQL扩展所需的依赖,完全不需要自行编译整个PostgreSQL,直接下载PostgreSQL官方发布的Windows预编译二进制包即可,包内已经包含编译扩展所需的全部头文件、库文件,直接使用即可规避编译全量源码的各类坑。

内容的提问来源于stack exchange,提问作者kloaf11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:36:07