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

使用PGI编译器安装zlib为部署NetCDF准备环境时configure报错如何解决

问题原因
  1. PGI编译器版本兼容性问题:2020年之前发布的老版PGI编译器对GNU C扩展语法的支持存在缺陷,而你使用的系统glibc版本高于2.28,新版glibc在stdio.h中给__malloc__属性新增了释放函数关联参数,老版pgcc无法识别这种带参数的属性定义,直接触发头文件解析错误。
  2. 编译参数错误:你在configure命令中添加的--archs="x86_64"是zlib专为macOS系统设计的参数,Linux环境下使用会导致x86_64被当做无效输入文件传入编译命令,进一步干扰configure的基础类型检测流程,才会出现找不到size_t的报错。
解决方法

方案1:添加预定义参数兼容属性语法(推荐,无需更换软件版本)

执行configure时添加预定义宏覆盖系统头文件的属性定义,同时删除无效的--archs参数,命令修改为:

CC=pgcc CFLAGS="-D__attribute_malloc__=__attribute__((__malloc__))" ./configure --prefix=你要安装zlib的路径

如果还有其他属性相关报错,可以追加参数禁用所有GNU属性检测:

CC=pgcc CFLAGS="-D__attribute__(x)= -D__attribute_malloc__=__attribute__((__malloc__))" ./configure --prefix=你要安装zlib的路径

configure执行完成后,正常运行make && make install即可完成zlib安装。

方案2:升级编译器版本

将PGI编译器升级为NVHPC 21.7及以上版本(PGI被NVIDIA收购后改名为NVHPC),新版编译器已完整兼容新版glibc的属性语法,直接执行标准configure命令即可完成编译。

方案3:编译静态库规避问题

如果不需要使用动态zlib库,可以在configure时添加--static参数强制编译静态库,也可绕过部分头文件检测错误:

CC=pgcc ./configure --static --prefix=你要安装zlib的路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:06:05