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

Ubuntu升级后运行presto遇__pow_finite未定义符号错误求助

解决Ubuntu升级后presto运行__pow_finite未定义符号问题

一、查看libpresto.so编译所用的CLANG版本

如果找不到.comment日志文件,可通过以下方式尝试获取版本信息:

  • 用readelf检查二进制的注释段:
    readelf -p .comment /Softwares/presto/lib/libpresto.so
    
    多数编译器会在此段留存版本标识,包括CLANG的版本信息。
  • 检查编译临时文件:若presto编译后未清理临时文件,可进入源码目录的build或obj文件夹,对其中的.o目标文件执行上述readelf命令,同样能提取编译版本。
  • 推断系统默认版本:由于你是在Ubuntu20.04环境编译的该软件,而Ubuntu20.04默认CLANG版本为9,大概率当时使用的就是这个版本。

二、版本低于10时的处理方案

是的,需要先升级CLANG到10及以上版本,再重新编译presto,步骤如下:

  1. 安装高版本CLANG:
    sudo apt update
    sudo apt install clang-10
    # 可选:将clang-10设为默认编译器
    sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-10 100
    sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-10 100
    
  2. 重新编译presto:
    进入presto源码目录,先清理旧编译产物:
    make clean
    # 若未设置默认编译器,手动指定clang版本
    CC=clang-10 CXX=clang++-10 make
    # 已设默认则直接执行
    make
    
  3. 更新库文件:
    编译完成后,将新生成的libpresto.so替换至/Softwares/presto/lib/目录,或执行make install完成安装。

补充:__pow_finite未定义问题确实与低版本CLANG有关,CLANG 10及以上修复了该符号的链接问题。Ubuntu22.04的glibc版本更高,对符号依赖更严格,因此旧版本编译的库会出现兼容性报错。

内容的提问来源于stack exchange,提问作者Py-ser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:07:04