unbuntu下编译caffe出错问题总结

本文记录了在编译caffeSSD过程中遇到的各种问题及其解决方案,包括protoc版本问题、gcc版本问题、符号未定义错误等,并提供了解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在编译caffe SSD过程中,由于尝试anaconda进行caffe环境搭建,尝试了过多方法,致使配置混乱,遂重新进行系统配置,并总结了可能会遇到的问题,记录如下。

问题1及解决方案:

报错:
.build_release/lib/libcaffe.so:
undefined reference to `google::protobuf::io::CodedOutputStream::WriteVarint64ToArray(unsigned long long, unsigned char
)’*
(1)goole protoc 问题
一般是protoc版本问题,系统默认一般是3.1.0,在此降到2.6.1,具体方法,可参考上一篇caffe安装的博客
经常protoc不能make到,修改makefile中的protoc位置,具体操作如下:

# 也就是下面$(Q)后跟的地址,/usr/local/bin/protoc(whereis protoc找到自己安装的位置)

$(PROTO_BUILD_DIR)/%.pb.cc $(PROTO_BUILD_DIR)/%.pb.h : \
		$(PROTO_SRC_DIR)/%.proto | $(PROTO_BUILD_DIR)
	@ echo PROTOC $<
	$(Q)/usr/local/bin/protoc --proto_path=$(PROTO_SRC_DIR) --cpp_out=$(PROTO_BUILD_DIR) $<

$(PY_PROTO_BUILD_DIR)/%_pb2.py : $(PROTO_SRC_DIR)/%.proto \
		$(PY_PROTO_INIT) | $(PY_PROTO_BUILD_DIR)
	@ echo PROTOC \(python\) $<
	$(Q)/usr/local/bin/protoc --proto_path=$(PROTO_SRC_DIR) --python_out=$(PY_PROTO_BUILD_DIR) $<

(2)降gcc,g++的版本
    (cuda版本不能超过6.0,故选择降至4.8,这个具体问题具体分析)
  参考博客 gcc/g++降至4.8

gcc --version # 查看当前版本
sudo apt-get install gcc-4.8
ls /usr/bin/gcc* # 查看已有的gcc版本,确认一下刚才4.8.5有没有装成功
# 某个版本加入gcc候选中,最后的数字是优先级,我自己是直接设为100,没任何问题
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 100
sudo update-alternatives --config gcc # 显示当前配置的gcc版本
# g++ 降级安装同理,只需将gcc进行置换即可
# Note:此时gcc --version,可能还是显示的以前默认版本,但配置已经更改为gcc-4.8了,如果出现这种情况也不必惊慌,为啥出现这种情况,我也很费解。

降完版本,如果问题仍未解决,可能是protobuf未用现有gcc/g++进行编译,可重新进行编译,编译可见安装protobuf 2.6.1,记得make之前make clean一下,防止出错。

问题2:

File “/home/crj/caffe/python/caffe/init.py”, line 1, in
from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver
File “/home/crj/caffe/python/caffe/pycaffe.py”, line 13, in
from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver,
ImportError: /home/crj/caffe/python/caffe/_caffe.so: undefined symbol: _ZN5caffe9SGDSolverIfE19SnapshotSolverStateERKSs

  解决方法:

# 分析原因:忘记实现make test,重新执行以下步骤可实现import caffe成功
make clean
make all -j16
make pycaffe
make test
make runtest
问题3:

出错error:
NVCC src/caffe/test/test_im2col_kernel.cu
/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h(436): error: identifier “nullptr” is undefined
/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h(436): error: expected a “;”
/usr/include/x86_64-linux-gnu/c++/6/bits/c++config.h(205): error: expected a “;”
/usr/include/c++/6/exception(63): error: expected a “;”
/usr/include/c++/6/exception(69): error: expected a “;”

  解决方法:

这个在网上查到的解决方案是gcc的版本问题,但是在caffe进行编译前,已经将gcc降到了gcc-4.8版本,
本不应有此问题,故重新make clean编译了一遍,成功。
问题4:

出错error:
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
/usr/bin/x86_64-linux-gnu-ld: 找不到 -lopenblas
collect2: error: ld returned 1 exit status
Makefile:568: recipe for target ‘.build_release/lib/libcaffe.so.1.0.0-rc3’ failed
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1

  解决方法:

sudo apt-get install liblapack-dev liblapack3 libopenblas-base libopenblas-dev
问题5:

出错error:
CXX/LD -o .build_release/tools/upgrade_net_proto_binary.bin
.build_release/lib/libcaffe.so:对‘boost::re_detail_106501::verify_options(unsigned int, boost::regex_constants::_match_flags)’未定义的引用

  解决方法:

# 修改下面makefile文件#中的内容
# LIBRARIES += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_hl hdf5
LIBRARIES += glog gflags protobuf boost_system boost_filesystem boost_regex m hdf5_serial_hl hdf5_serial
问题6

这里附一个在装cuda时遇到的问题
sudo apt-get install cuda
出错error:
依赖: cuda-9-0 (>= 9.0.176) 但是它将不会被安装 无法修正错误,因为您要求某些软件包保持现状,它们破坏了软件包间的依赖关系

这个问题,总结了一下,最可能出现的原因是,使用系统附加专有驱动引起的,网上一堆说是软件更新的锅,试了一下,均不好使,故放弃了专有驱动,自己重新进行安装nvidia-390,解决了该问题。参考上篇博客下的安装GPU版本的tensorflow部分

也总结下nvidia-smi命令后,显示的驱动安装失败的问题。

(1)按上述步骤进行重新install nvidia-390
(2)在软件和更新上的附加驱动中,选择专有驱动nvidia-390
记得sudo reboot进行重启,如果发现安装成功,但是仍无效,你可能是忘记了重启。
重启过程中,蓝屏界面选择enroll mok ——continue——yes——密码——reboot,注意等待太久,蓝屏界面自动过渡,同样会不能成功

<think>好的,用户想在Ubuntu 16.04上安装无GPU版的Caffe深度学习框架。首先,我需要回忆一下安装Caffe的基本步骤,并确保去掉所有与GPU相关的部分。根据提供的引用内容,用户可能已经参考过一些资源,但需要更清晰的指导。 首先,安装依赖项是关键。引用[1]和[2]提到了安装各种开发库,比如libprotobuf-dev、libboost-all-dev等。这些是必须的基础依赖,确保编译时不会出错。需要注意的是,对于无GPU版本,可能不需要安装NVIDIA驱动,所以可以跳过引用[1]中的步骤2和引用[3]中的GPU驱动安装部分。 接下来,用户可能需要克隆Caffe的源代码仓库。这部分在引用中没有提到,但通常Caffe的安装需要从GitHub克隆代码。然后配置Makefile.config文件,如引用[5]提到的,需要修改配置文件。在无GPU的情况下,应该注释掉CPU_ONLY := 1这一行,并确保不使用CUDA相关的设置。同时,根据Python路径的配置,引用[4]提到需要设置PYTHONPATH环境变量,这可能是在安装完成后需要的步骤。 编译过程包括使用make命令编译Caffe,这里可能需要指定-j参数以加快速度。之后,运行测试以确保安装正确,比如make runtest。安装PyCaffe也是重要的一步,这样可以在Python中使用Caffe。最后,设置环境变量,让系统找到Caffe的Python模块,如引用[4]中的操作。 可能遇到的问题包括依赖项缺失、Python包未安装或路径配置错误。需要提醒用户仔细检查每个步骤,尤其是依赖项是否全部安装,以及Makefile.config中的配置是否正确。此外,Ubuntu 16.04的软件源可能较旧,需要确认是否仍然可用,或者是否需要更换镜像源。 总结步骤:安装依赖、克隆代码、配置、编译、测试、安装Python接口、设置环境变量。确保每个步骤都明确,并且针对无GPU的情况调整配置。最后生成相关问题,帮助用户解决可能遇到的更深层次问题。</think>### 在Ubuntu 16.04上安装无GPU版Caffe的指南 #### **1. 安装系统依赖** 运行以下命令安装基础开发库: ```bash sudo apt-get update sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get install git cmake build-essential ``` 此步骤确保编译所需的头文件和库已就位[^2]。 #### **2. 克隆Caffe仓库** ```bash git clone https://github.com/BVLC/caffe.git cd caffe ``` #### **3. 配置编译选项** 复制并修改配置文件: ```bash cp Makefile.config.example Makefile.config vi Makefile.config # 或使用其他编辑器 ``` 修改以下内容: - 取消注释 `CPU_ONLY := 1`(启用无GPU模式) - 注释或删除所有与CUDA相关的配置(如 `USE_CUDNN := 1`) - 检查BLAS设置(推荐使用OpenBLAS): ```makefile BLAS := open BLAS_INCLUDE := /usr/include/openblas ``` #### **4. 编译Caffe** ```bash make all -j$(nproc) # 使用多线程加速编译 make test make runtest # 验证核心功能 ``` #### **5. 安装Python接口** 安装Python依赖: ```bash sudo apt-get install python-dev python-numpy python-scipy python-matplotlib ``` 编译PyCaffe: ```bash make pycaffe ``` 添加Python路径到环境变量(永久生效): ```bash echo 'export PYTHONPATH=$(pwd)/python:$PYTHONPATH' >> ~/.bashrc source ~/.bashrc ``` 验证安装: ```python python -c "import caffe; print(caffe.__version__)" ``` #### **6. 常见问题** - **依赖缺失**:若编译报错提示缺少库,根据错误信息安装对应依赖。 - **Python路径错误**:确保`PYTHONPATH`正确指向Caffe的`python`目录[^4]。 - **BLAS冲突**:若使用其他BLAS库(如Atlas),需修改`Makefile.config`中的相关配置。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值