caffe_.mexa64: undefined symbol:protobuf8internal10WireFormat 分析思路与解决方案
来源:互联网 发布:mac os beta版 编辑:程序博客网 时间:2024/06/15 22:13
安装 MatCaffe 的时候,报错:caffe_.mexa64: undefined symbol:protobuf8internal10WireFormat
分析思路: 错误信息包含两个关键信息:1. undefined symbol 2. protobuf 和 WireFormat
(1)undefined symbol : 这个错误的原因在于,有对应函数的“声明”,但是没有找到函数的“实现”。换句话说,MakeFile包含了该函数的头文件,却不包含对应的library。
(2)protobuf 和 WireFormat: 看到这个,我猜想 wireFormat 是 protobuf 中的某个函数的名称,经过查找,还真是,所以我确定这个问题的原因就是:找不到正确的 protobuf 库
具体来说,我在 Makefile.config 中,令 USE_PKG_CONFIG := 1,让 pkg_config 帮助我寻找 protobuf 库的路径,结果,这家伙只能告诉编译器 Include 目录,没什么卵用,所以我自己在 Makefile 中添加 protobuf 库路径:
# to enable protobuf
LIBRARY_DIRS += /usr/lib/x86_64-linux-gnu
接下来,重新编译一次:
make clean
make all
make matcaffe
成功,但是在 Matlab 中输入 caffe.set_mode_cpu(),仍然报错。
于是,在 Matlab 中输入命令:(列出 caffe_.mexa64 所有依赖的库文件 )
!ldd /home/Caffe-FaceAlignment/matlab/+caffe/private/caffe_.mexa64
关键的信息出现了:
libprotobuf.so.8 => /home/Programs/matlab_2016b/bin/glnxa64/libprotobuf.so.8 (0x00007f1787ddb000)
查看glnxa64/libprotobuf.so.8,发现它是一个软链接,指向 /matlab_2016b/bin/glnxa64/libprotobuf.so.8.0.0
也许就是这个库有问题,所以我让它重新指向系统中的 protobuf 库(/usr/lib/x86_64-linux-gnu/libprotobuf.so.8.0.0)
再次编译,问题完美解决。
- caffe_.mexa64: undefined symbol:protobuf8internal10WireFormat 分析思路与解决方案
- undefined symbol: PyFPE_jbuf的解决方案
- Caffe Problem: make matcaffe 'matlab/+caffe/private/caffe_.mexa64' failed
- make matcaffe 'matlab/+caffe/private/caffe_.mexa64' failed
- MatCaffe问题: make matcaffe 'matlab/+caffe/private/caffe_.mexa64' failed
- Undefined function or variable 'caffe_'
- 离奇“undefined reference”错误分析与解决方案
- caffe_.mexa64': libcaffe.so: cannot open shared object file: No such file or directory
- Undefined symbol
- undefined symbol
- Invalid MEX-file: caffe.mexa64 的解决方案
- Invalid MEX-file: caffe.mexa64 的解决方案
- undefined reference to symbol xxxxx和undefined symbol:xxxx错误的原因分析以及解决方法
- 关于ImportError: xxxx.so: undefined symbol: PyFPE_jbuf的解决方案
- linux编译出现undefined reference to symbol 'pthread_create错误解决方案
- symbol lookup error - undefined symbol
- symbol lookup error: undefined symbol
- symbol lookup error: undefined symbol
- tty0 显示的过程
- 基于JFinal的evens的SQL文件执行和生成
- Codeforces 616D Longest k-Good Segment【尺取法】
- oracle使用的问题
- java工程不能导入eclipse
- caffe_.mexa64: undefined symbol:protobuf8internal10WireFormat 分析思路与解决方案
- 初学Android,图形图像之使用双缓冲画图(二十七)
- JDBC
- java实现排序(4)-堆排序
- Boost.Interprocess使用手册翻译之十二.架构和内部实现(Architecture and internals)
- 使用iServer JAVA API访问iServer空间分析服务进行叠加分析示例
- 点评了一下学生的简历。其实对话也是一种伟大的传播。 孔子在论语中对话,《理想国》里面的对话。<另一博客搬家>
- 第二册第七单元
- Struts2自定义类型转换器失效的解决