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

OpenEuler22.03编译PostGIS3.1.0报错:gnu/stubs-32.h文件缺失

解决OpenEuler 22.03 LTS-SP3编译PostGIS 3.1.0的make阶段错误

一、修复*PG_INT64_TYPE未定义*错误

  • 检查PostgreSQL版本兼容性:PostGIS 3.1.0仅支持PostgreSQL 9.6~13版本。执行pg_config --version确认当前系统的PostgreSQL版本,若版本高于13,建议降级到兼容版本,或升级PostGIS至支持高版本PostgreSQL的分支(如3.2+)。
  • 手动添加宏定义:若版本兼容,可在make命令前临时指定宏定义:
    make CFLAGS="-DPG_INT64_TYPE='long long'"
    
  • 检查PostgreSQL开发包完整性:执行dnf install postgresql-devel重新安装完整的PostgreSQL开发包,确保头文件目录(pg_config --includedir输出路径)下的pg_config.h中包含PG_INT64_TYPE定义。

二、修复找不到gnu/stubs-32.h文件错误

  • 开启32位软件仓库(可选):编辑/etc/yum.repos.d/openEuler.repo,在对应仓库段(如[OS])添加multilib_policy=all,再执行dnf install glibc-devel.i686尝试安装32位依赖库。
  • 强制64位编译链:确保所有依赖库(GDAL、GEOS、PROJ、json-c)均为64位编译。重新编译依赖时添加64位参数,以GEOS为例:
    ./configure --prefix=/opt/geos-v3.8.0 --enable-64bit CFLAGS="-m64" && make && make install
    
  • 调整PostGIS配置参数:移除--disable-multilib,明确指定64位编译环境:
    ./configure --prefix=/opt/postgis-3.1.0 --with-pgconfig=/usr/bin/pg_config --with-gdalconfig=/opt/gdal-2.4.2/bin/gdal-config --with-geosconfig=/opt/geos-v3.8.0/bin/geos-config --with-jsondir=/opt/json-c-0.16 --with-projdir=/opt/proj-4.9.3 --without-protobuf CFLAGS="-m64" CXXFLAGS="-m64"
    

三、完整重新编译流程

  1. 清理现有编译残留:
    make clean && make distclean
    rm -rf /opt/postgis-3.1.0 /opt/gdal-2.4.2 /opt/geos-v3.8.0 /opt/json-c-0.16 /opt/proj-4.9.3
    
  2. 按顺序重新编译64位依赖:
    • PROJ 4.9.3:
      ./configure --prefix=/opt/proj-4.9.3 CFLAGS="-m64" && make && make install
      
    • GEOS 3.8.0:
      ./configure --prefix=/opt/geos-v3.8.0 --enable-64bit CFLAGS="-m64" && make && make install
      
    • GDAL 2.4.2:
      ./configure --prefix=/opt/gdal-2.4.2 --with-proj=/opt/proj-4.9.3 CFLAGS="-m64" && make && make install
      
    • json-c 0.16:
      ./configure --prefix=/opt/json-c-0.16 CFLAGS="-m64" && make && make install
      
  3. 配置并编译PostGIS:
    ./configure --prefix=/opt/postgis-3.1.0 --with-pgconfig=/usr/bin/pg_config --with-gdalconfig=/opt/gdal-2.4.2/bin/gdal-config --with-geosconfig=/opt/geos-v3.8.0/bin/geos-config --with-jsondir=/opt/json-c-0.16 --with-projdir=/opt/proj-4.9.3 --without-protobuf CFLAGS="-m64" CXXFLAGS="-m64"
    make CFLAGS="-DPG_INT64_TYPE='long long'"
    make install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:41:34