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

Ubuntu 18.04安装Thrift-0.14.2时make阶段报错求助

在Ubuntu 18.04 LTS编译安装Thrift-0.14.2时的libboost_unit_test_framework.a缺失问题解决

问题背景

你在编译过程中执行make时遇到以下错误:

g++: error: /usr/lib/x86_64-none/libboost_unit_test_framework.a: No such file or directory

这个错误的核心原因是你误用了交叉编译参数--host=x86_64执行configure,该参数会让脚本错误识别系统库的搜索路径——Ubuntu 18.04的Boost静态库实际存放在/usr/lib/x86_64-linux-gnu/目录下。

另外你之前碰到的configure: error: cannot run C compiled programs错误,大概率是因为在Vagrant共享目录(/vagrant)下操作,共享目录的文件系统特性限制了configure执行编译生成的测试程序。

解决步骤

  • 清理编译残留
    进入已解压的Thrift目录,清理之前的编译生成文件和配置记录:

    make clean
    rm -rf config.log config.status
    
  • 移动Thrift目录到本地路径
    将Thrift目录从共享目录迁移到虚拟机本地目录(比如用户主目录),避免文件系统限制:

    mv /vagrant/thrift-0.14.2 ~/
    cd ~/thrift-0.14.2
    
  • 重新生成configure文件
    由于你之前修改过configure.ac(删除了AC_FUNC_MALLOC和AC_FUNC_REALLOC),需要重新生成configure脚本:

    autoreconf -vfi
    
  • 重新执行configure(去掉交叉编译参数)
    直接运行原生configure命令,无需添加--host=x86_64:

    ./configure
    

    此时之前的"cannot run C compiled programs"错误会自动消失,因为操作目录切换到了本地路径。

  • 修复符号右移问题
    复用你之前的解决方案,在./lib/c_glib/src/thrift/config.h和./lib/cpp/src/thrift/config.h中添加:

    #define SIGNED_RIGHT_SHIFT_IS 1
    #define ARITHMETIC_RIGHT_SHIFT 1
    
  • 重新执行编译
    运行make完成编译:

    make
    

    若需要将Thrift安装到系统目录,后续可执行:

    sudo make install
    

额外说明

  • 交叉编译参数--host仅用于在当前系统编译其他架构的程序,本机编译完全不需要该参数,误用会导致库路径识别混乱。
  • Vagrant共享目录存在文件系统权限和特性限制,不适合执行编译操作,建议始终在虚拟机本地目录完成编译流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:05:00