升级Ruby至2.7.4后启动Rails报错Symbol not found: __ZN6libdap5ErrorD1Ev如何解决
问题原因
错误核心是本地系统GDAL依赖与gdal-ruby gem编译版本不匹配,和Ruby、rbenv、bootsnap均无关。错误日志中Symbol not found: __ZN6libdap5ErrorD1Ev的提示说明:系统安装的GDAL动态库libgdal.28.dylib依赖的libdap接口,和当前系统实际安装的libdap.27.dylib版本不兼容,导致动态链接失败,gdal-ruby gem无法正常加载。
排查解决步骤
- 第一步:修复系统层面的依赖匹配问题
执行以下命令更新brew包索引,重装GDAL和libdap确保两者版本兼容:brew update brew reinstall gdal libdap - 第二步:重新编译gdal-ruby gem
之前安装的gdal-ruby是基于旧版本GDAL编译的,动态链接地址已失效,需要卸载后重新安装:# 进入项目目录后执行 gem uninstall gdal-ruby bundle install - 第三步:清理进程缓存后验证
停止spring缓存进程,避免加载旧的依赖路径:spring stop rails c
额外排查方向
如果以上操作后问题仍存在,可执行gdalinfo --version查看当前系统GDAL版本,确认和项目gdal-ruby gem要求的版本是否匹配,若gem依赖特定版本GDAL,用brew安装对应版本后重新编译gem即可。
内容的提问来源于stack exchange,提问作者Gaeguri
相关产品推荐
相关产品推荐

