C ++实现CNN错误添加符号:命令行中缺少DSO

时间:2016-12-29 15:37:54

标签: c++ computer-vision ubuntu-14.04 deep-learning

我正在测试提供here的CNN实施。我运行命令:

make cifar10 && ./cifar10

但我收到以下消息:

g++ -o cifar10 BatchProducer.o ConvolutionalLayer.o ConvolutionalTriangularLayer.o IndexLearnerLayer.o MaxPoolingLayer.o MaxPoolingTriangularLayer.o NetworkArchitectures.o NetworkInNetworkLayer.o Picture.o Regions.o Rng.o SigmoidLayer.o SoftmaxClassifier.o SparseConvNet.o SparseConvNetCUDA.o SpatiallySparseBatch.o SpatiallySparseBatchInterface.o SpatiallySparseDataset.o SpatiallySparseLayer.o TerminalPoolingLayer.o cudaUtilities.o readImageToMat.o types.o utilities.o vectorCUDA.o vectorHash.o OpenCVPicture.o SpatiallySparseDatasetCIFAR10.o cifar10.o -lopencv_core -lopencv_highgui -lopencv_imgproc -lrt -larmadillo -lopenblas -lz --std=c++11 -O3
/usr/bin/ld: BatchProducer.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [cifar10] Error 1

这有什么问题?我安装了网页中列出的所有依赖项。我没有安装CUDA,因为我测试了CPU版本here。因此,我不认为错误是由于缺少CUDA。 我正在使用Ubuntu 14.04和gcc 5.3.0。 谢谢大家的帮助!!!

1 个答案:

答案 0 :(得分:0)

解决方案:添加' -lz'到你的makefile / GCC标志。换句话说,您只是在make步骤中缺少一个库,并检查是否已安装所有依赖项

sudo apt-get install libarmadillo-dev libopencv-core-dev libopencv-highgui-dev sparsehash