Ubuntu 16.04下安装兼容CUDA9.0的预编译GPU版Caffe遇阻求助
解决Ubuntu 16.04上Caffe-gpu预编译包导入失败的问题
你的情况梳理
- 需求:在Ubuntu 16.04上安装可用的预编译版Caffe-gpu(手动编译多次失败)
- 当前环境:CUDA 9.0,系统可正常导入Caffe2库
- 遇到的问题:通过Anaconda创建虚拟环境并安装caffe-gpu后,执行
python -c "import caffe"触发protobuf符号未定义错误,具体错误信息如下:
Traceback (most recent call last): File "<string>", line 1, in <module> File "/home/*****/miniconda3/envs/cudapy2/lib/python2.7/site-packages/caffe/__init__.py", line 1, in <module> from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer File "/home/*****/miniconda3/envs/cudapy2/lib/python2.7/site-packages/caffe/pycaffe.py", line 13, in <module> from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \ ImportError: /home/*****/miniconda3/envs/cudapy2/lib/python2.7/site-packages/caffe/../../../libcaffe.so.1.0.0: undefined symbol: _ZNK6google8protobuf7Message11GetTypeNameEv
问题根源
这个错误是protobuf版本不兼容导致的:Anaconda提供的caffe-gpu包依赖特定版本的protobuf,但你当前虚拟环境中的protobuf版本与它不匹配,导致链接时找不到对应的符号。
解决方案
方案1:修复Conda环境的protobuf版本
- 先查看当前虚拟环境的protobuf版本:
conda list protobuf - 安装与caffe-gpu兼容的protobuf版本(针对CUDA9.0和Ubuntu16.04,推荐protobuf 3.2.0):
conda install protobuf=3.2.0 - 再次测试导入:
python -c "import caffe"
方案2:使用Ubuntu系统预编译包
如果Conda的包还是存在问题,可以尝试系统级的预编译Caffe-gpu:
- 添加适配Ubuntu16.04和CUDA9.0的Caffe预编译软件源
- 更新软件包列表并安装:
sudo apt update && sudo apt install caffe-cuda - 配置Python路径让系统识别Caffe库:
export PYTHONPATH=/usr/lib/python2.7/dist-packages/caffe:$PYTHONPATH - 再次执行测试导入命令。
关于Ubuntu版本升级的建议
Ubuntu16.04是支持CUDA9.0的,所以不需要强制升级就能使用Caffe-gpu。不过16.04的软件包版本相对老旧,如果后续频繁遇到依赖兼容问题,升级到Ubuntu18.04会获得更完善的软件支持,减少类似版本冲突的麻烦。
内容的提问来源于stack exchange,提问作者YellowishLight
相关产品推荐
相关产品推荐

