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

Ubuntu20.04编译HDF-EOS2 Fortran版本遇gdopen未定义引用问题

解决HDF-EOS2 Fortran编译时gdopen未定义引用问题

排查步骤与解决方案

1. 确认HDF-EOS2的Fortran接口是否正确编译

先检查HDF-EOS2安装目录的lib文件夹,确认libhdfeos.a中是否包含gdopen符号:

nm $HDFEOS_DIR/lib/libhdfeos.a | grep gdopen

如果输出为空,说明Fortran接口未正确编译,重新配置时注意:

  • 配置选项应为--enable-fortran(连字符格式,而非你之前用的下划线--enable_fortran,拼写错误会导致Fortran接口未启用)
  • 必须添加--with-hdf4=$HDF4_DIR指定HDF4路径,HDF-EOS2的Fortran接口依赖HDF4的Fortran组件,未指定路径会导致编译时跳过相关逻辑

2. 调整编译链接的库顺序与依赖

HDF-EOS2依赖HDF4的Fortran库,修改编译命令,显式链接所有依赖库(注意GCC链接规则中,依赖库需放在源文件之后,被依赖的库要后置):

h4fc -fno-underscoring read_hdfeos.f90 -L$HDFEOS_DIR/lib -lhdfeos -lGctp -L$HDF4_DIR/lib -lmfhdf -ldf -o read_hdfeos.exe

3. 验证符号名匹配

由于你使用了-fno-underscoring,需确认库中gdopen的符号名与代码调用一致:

nm $HDFEOS_DIR/lib/libhdfeos.a | grep -i gdopen

如果输出符号为_gdopen(带下划线),说明HDF-EOS2编译时的符号规则与代码不匹配:

  • 可尝试在编译HDF-EOS2时添加-Df2cFortran选项,重新编译安装
  • 或去掉代码编译时的-fno-underscoring选项,适配库的符号规则

4. 重新编译HDF-EOS2的标准配置示例

建议用以下完整配置重新编译HDF-EOS2,确保所有依赖路径正确:

./configure --prefix=$HDFEOS_DIR \
            CC=h4cc \
            FC=h4fc \
            --with-hdf4=$HDF4_DIR \
            --with-szlib=$SZIP_DIR \
            --enable-fortran

执行make && make install后,再重新编译你的Fortran代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:05:14