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

Ubuntu16.04编译Caffe报错:.build_release/src/caffe/util/blocking_queue.o Error 1

解决Ubuntu16.04编译Caffe时boost绑定相关编译错误

兄弟,我之前也帮不少人解决过Ubuntu16.04编译Caffe时碰到的这个报错,你遇到的make: *** [.build_release/src/caffe/util/blocking_queue.o] Error 1,核心就是boost库的版本或者配置出了岔子,尤其是boost/bind这块的头文件冲突或者版本不匹配。下面给你几个亲测有效的解决步骤:

第一步:统一系统boost库版本,避免冲突

Ubuntu16.04默认自带的boost是1.58版本,这个版本和Caffe的兼容性很好。如果你自己手动装过更高版本的boost,很容易出现头文件打架的情况:

  • 先查一下当前系统里装了哪些boost相关包:
    dpkg -l | grep libboost
    
  • 如果发现有手动安装的高版本boost,先把它卸掉:
    # 要是你是源码编译安装的boost,进入当初的安装目录执行卸载
    cd /path/to/your/boost_install_dir
    sudo ./bootstrap.sh --uninstall
    # 再清理残留的头文件和库文件
    sudo rm -rf /usr/local/include/boost
    sudo rm -rf /usr/local/lib/libboost*
    
  • 重新安装系统默认的完整boost开发库:
    sudo apt-get update
    sudo apt-get install libboost-all-dev
    

第二步:调整Caffe的Makefile.config配置

打开Caffe根目录下的Makefile.config文件,确保boost相关配置正确:

  • 找到USE_BOOST的选项,确保它是开启状态(如果之前被注释了就取消注释):
    # Uncomment to use boost threads
    USE_BOOST := 1
    
  • 如果你之前手动指定过boost的INCLUDE_DIR或者LIBRARY_DIR,把这些行注释掉,让系统自动用默认路径:
    # BOOST_INCLUDE_DIR := /usr/local/include
    # BOOST_LIBRARY_DIR := /usr/local/lib
    

第三步:清理编译缓存,重新编译

改完配置后,一定要把之前编译的残留文件清干净,不然容易带着旧错误继续编译:

make clean
# 用多线程编译加快速度,nproc会自动识别CPU核心数
make all -j$(nproc)

额外排查:检查gcc版本是否兼容

Ubuntu16.04默认的gcc是5.4.0,和boost 1.58适配得很好。如果你之前升级过gcc到7以上版本,也可能触发这个编译问题,可以切换回默认的gcc:

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

在弹出的选项里选对应gcc-5的编号就行。

补充一句:这个错误本质是boost的bind机制在不同版本、不同编译环境下的实现有差异,Caffe的blocking_queue.cpp依赖boost的线程和绑定功能,一旦头文件路径乱了或者版本不对,就会炸出这个编译错误。

内容的提问来源于stack exchange,提问作者Frank.Fan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:16:27