Ubuntu20.04执行curl报undefined symbol: curl_url_cleanup如何解决
原因定位
这个错误是curl二进制程序和依赖的libcurl动态库版本不匹配导致的:curl_url_cleanup 是libcurl 7.62版本后新增的接口,你当前系统中apt安装的curl是7.68版本,但运行时实际加载的libcurl动态库版本低于7.62,找不到对应符号就会报错。man手册正常是因为手册文件只和安装的curl包带的文档一致,和动态库版本无关。
修复步骤
- 第一步:确认动态库加载路径
执行命令:ldd $(which curl) | grep libcurl
正常Ubuntu 20.04 apt源安装的libcurl路径应该是/usr/lib/x86_64-linux-gnu/libcurl.so.4,如果输出的路径是/usr/local/lib/下的libcurl文件,说明你之前手动编译安装过其他版本的libcurl,覆盖了系统默认加载优先级。 - 第二步:清理非系统版本的libcurl
优先去你之前编译libcurl的源码目录执行卸载:sudo make uninstall
找不到源码目录就直接删除手动安装的libcurl文件:sudo rm -f /usr/local/lib/libcurl* - 第三步:刷新动态库缓存
执行命令:sudo ldconfig - 第四步:重装系统默认的curl和libcurl包
执行命令:sudo apt install --reinstall libcurl4 curl - 第五步:验证修复
执行curl --version,能正常输出版本信息即为修复成功。
额外排查项
如果执行上述步骤后还是报错,检查你当前用户的环境变量配置:
查看 ~/.bashrc、~/.profile、/etc/profile 等文件是否设置了 LD_LIBRARY_PATH 变量优先加载了包含旧版本libcurl的目录,删除对应配置后执行 source 生效即可。
内容的提问来源于stack exchange,提问作者PS95
相关产品推荐
相关产品推荐

