Mac OS安装pglogical扩展报错找不到postgres.h头文件如何解决
问题根因
Homebrew渠道安装的PostgreSQL 12存在头文件路径不匹配问题:pg_config配置中返回的服务端头文件目录为/usr/local/opt/postgresql@12/include/server,但postgres.h等实际头文件存放在/usr/local/opt/postgresql@12/include/postgresql/server路径下,路径缺少postgresql层级,直接编译会触发头文件缺失错误。
解决步骤
- 创建软链接补全路径映射
执行以下命令建立软链接,让配置路径能正确匹配实际文件位置:ln -s /usr/local/opt/postgresql@12/include/postgresql/server /usr/local/opt/postgresql@12/include/server ln -s /usr/local/opt/postgresql@12/include/postgresql/internal /usr/local/opt/postgresql@12/include/internal - 清理历史编译缓存
进入pglogical源码目录,执行命令删除之前编译失败生成的中间文件:make clean - 重新编译安装
显式指定pg_config路径执行安装,避免读取到错误的环境配置:sudo make PG_CONFIG=/usr/local/Cellar/postgresql@12/12.10_1/bin/pg_config install
兜底方案
如果完成上述操作后仍提示头文件缺失,编译时手动追加头文件搜索路径即可:
sudo make PG_CONFIG=/usr/local/Cellar/postgresql@12/12.10_1/bin/pg_config CPPFLAGS="-I/usr/local/opt/postgresql@12/include/postgresql/server -I/usr/local/opt/postgresql@12/include/postgresql/internal" install
编译完成后连接目标数据库,执行CREATE EXTENSION pglogical;即可正常启用扩展。
内容的提问来源于stack exchange,提问作者Gurmokh
相关产品推荐
相关产品推荐

