当你执行如下命令的时候:
make -j16 && make pycaffe 你会不小心的报一个错误: CXX/LD -o .build_release/examples/cpp_classification/classification.bin CXX/LD -o .build_release/examples/siamese/convert_mnist_siamese_data.bin CXX/LD -o .build_release/examples/cifar10/convert_cifar_data.bin .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:562: recipe for target '.build_release/tools/caffe.bin' failed make: *** [.build_release/tools/caffe.bin] Error 1 make: *** 正在等待未完成的任务.... .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:562: recipe for target '.build_release/tools/upgrade_net_proto_text.bin' failed make: *** [.build_release/tools/upgrade_net_proto_text.bin] Error 1 .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:567: recipe for target '.build_release/examples/cifar10/convert_cifar_data.bin' failed make: *** [.build_release/examples/cifar10/convert_cifar_data.bin] Error 1 .build_release/examples/cpp_classification/classification.o:在函数‘main’中: classification.cpp:(.text.startup+0x22d):对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:567: recipe for target '.build_release/examples/cpp_classification/classification.bin' failed make: *** [.build_release/examples/cpp_classification/classification.bin] Error 1 .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:567: recipe for target '.build_release/examples/mnist/convert_mnist_data.bin' failed make: *** [.build_release/examples/mnist/convert_mnist_data.bin] Error 1 .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:562: recipe for target '.build_release/tools/extract_features.bin' failed make: *** [.build_release/tools/extract_features.bin] Error 1 .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对Makefile:562: recipe for target '.build_release/tools/upgrade_net_proto_binary.bin' failed ‘cv:make: *** [.build_release/tools/upgrade_net_proto_binary.bin] Error 1 :imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:562: recipe for target '.build_release/tools/convert_imageset.bin' failed make: *** [.build_release/tools/convert_imageset.bin] Error 1 .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:562: recipe for target '.build_release/tools/compute_image_mean.bin' failed make: *** [.build_release/tools/compute_image_mean.bin] Error 1 .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator<unsigned char> >&, std::vector<int, std::allocator<int> > const&)’未定义的引用 .build_release/lib/libcaffe.so:对‘cv::imdecode(cv::_InputArray const&, int)’未定义的引用 collect2: error: ld returned 1 exit status Makefile:567: recipe for target '.build_release/examples/siamese/convert_mnist_siamese_data.bin' failed make: *** [.build_release/examples/siamese/convert_mnist_siamese_data.bin] Error 1那是因为你用了opencv 3.x的缘故,只需在Makefile的最后一行加上:
LIBRARIES += glog gflags protobuf leveldb snappy \ lmdb boost_system boost_filesystem hdf5_hl hdf5 m \ opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio
然后: make clean make -j16 && make pycaffe 就可以重新运行通过了哈,亲测可用