2016-11-22 4 views
0

Iはすでに設定され(各試料とツールとの)CPU_ONLYとGPU_ONLYモードでゼロからカフェを構築しました。すぐに利用可能な結果に満足しています。建物カフェのcpp_classification例

しかし、私はcpp_classification例由来自分のプロジェクトを開始し、全体的なカフェのビルドシステムとは独立して、それを構築する上で困難を抱えています。そのように、私はcpp_classificationの例に戻り、スタンドアロンとして(それは私が何も残していないことを保証するために)それを構築し、同様のエラーに遭遇しています。

私は成功しcpp_classification例を掲げており、他の誰かが指導を提供できることを期待してあなたと私のビルドエラー出力とCMakeLists.txtの内容を共有します。

私は次のようになっていますビルドエラーに絞り込まれている

Scanning dependencies of target cpp_classification 
[ 50%] Building CXX object CMakeFiles/cpp_classification.dir/classification.cpp.o 
[100%] Linking CXX executable cpp_classification 
CMakeFiles/cpp_classification.dir/classification.cpp.o: In function `Classifier::Classifier(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:62: undefined reference to `caffe::Net<float>::Net(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, caffe::Phase, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const*, caffe::Net<float> const*)' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:63: undefined reference to `caffe::Net<float>::CopyTrainedLayersFrom(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' 
CMakeFiles/cpp_classification.dir/classification.cpp.o: In function `Classifier::SetMean(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:124: undefined reference to `caffe::BlobProto::BlobProto()' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:129: undefined reference to `caffe::Blob<float>::FromProto(caffe::BlobProto const&, bool)' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:135: undefined reference to `caffe::Blob<float>::mutable_cpu_data()' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:124: undefined reference to `caffe::BlobProto::~BlobProto()' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:124: undefined reference to `caffe::BlobProto::~BlobProto()' 
CMakeFiles/cpp_classification.dir/classification.cpp.o: In function `Classifier::Predict(cv::Mat const&)': 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:156: undefined reference to `caffe::Blob<float>::Reshape(int, int, int, int)' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:158: undefined reference to `caffe::Net<float>::Reshape()' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:165: undefined reference to `caffe::Net<float>::Forward(float*)' 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:169: undefined reference to `caffe::Blob<float>::cpu_data() const' 
CMakeFiles/cpp_classification.dir/classification.cpp.o: In function `Classifier::WrapInputLayer(std::vector<cv::Mat, std::allocator<cv::Mat> >*)': 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:184: undefined reference to `caffe::Blob<float>::mutable_cpu_data()' 
CMakeFiles/cpp_classification.dir/classification.cpp.o: In function `Classifier::Preprocess(cv::Mat const&, std::vector<cv::Mat, std::allocator<cv::Mat> >*)': 
/home/rudycazabon/caffe/examples/cpp_classification/classification.cpp:227: undefined reference to `caffe::Blob<float>::cpu_data() const' 
CMakeFiles/cpp_classification.dir/classification.cpp.o: In function `caffe::Caffe::set_mode(caffe::Caffe::Brew)': 
/home/rudycazabon/caffe/distribute/include/caffe/common.hpp:148: undefined reference to `caffe::Caffe::Get()' 
CMakeFiles/cpp_classification.dir/classification.cpp.o: In function `caffe::ReadProtoFromBinaryFileOrDie(char const*, google::protobuf::Message*)': 
/home/rudycazabon/caffe/distribute/include/caffe/util/io.hpp:78: undefined reference to `caffe::ReadProtoFromBinaryFile(char const*, google::protobuf::Message*)' 
collect2 

次のように私の対応CMakeList.txtは次のとおりです。

cmake_minimum_required(VERSION 3.6) 
project(cpp_classification) 
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") 

set(CAFFE_HOME ~/caffe/distribute) 

find_package(OpenCV REQUIRED) 
find_package(Caffe REQUIRED) 
find_package(GTest REQUIRED) 
find_package(glog REQUIRED) 
find_package(Boost REQUIRED COMPONENTS system) 
find_package(Protobuf REQUIRED) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

set(SOURCE_FILES classification.cpp) 

include_directories(${CAFFE_HOME}/include ${Boost_INCLUDE_DIRS}) 
link_directories(${CAFFE_HOME}/lib ${Boost_LIBRARY_DIRS}) 

add_executable(cpp_classification 
     ${SOURCE_FILES} 
     ${GLOG_INCLUDE_DIR} 
     ${Caffe_INCLUDE_DIR} 
     ${Protobuf_INCLUDE_DIR}) 

TARGET_LINK_LIBRARIES(cpp_classification 
     ${OpenCV_LIBS} 
     ${Boost_LIBRARIES} 
     ${GLOG_LIBRARY} 
     ${CAFFE_LIBRARY} 
     ${Protobuf_LIBRARY}) 

答えて

0

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")

てみてください

gccに古いABIをに使用するように指示します。