2016-12-29 36 views
0

我正在測試提供的CNN實現here。我運行命令:C++實現CNN添加符號錯誤:命令行中缺少DSO

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 '[email protected]@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。 謝謝大家的幫助!

回答

0

解決方案:向makefile/GCC標誌添加'-lz'。換句話說,您只需在製作步驟中缺少一個庫,並檢查是否安裝了所有依賴項。

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

謝謝。我遵循你的指示,並將'-lz'添加到GCC標誌。但似乎沒有什麼變化。我做錯什麼了嗎?我在啓動編譯後將所有消息打印出來。非常感謝你! – pfc