当我安装了 caffe2 安装页面中列出的所有先决条件后,我输入命令make && cd build && sudo make install
compile caffe2,然后我收到以下错误,第一部分是使用Cmake
.
cama@cama:/home/chaoyang/caffe2-master/build$ cmake .. -- CXX 编译器标识为 GNU 4.9.3 -- C 编译器标识为 GNU 4.9.3 -- 检查工作 CXX 编译器:/usr /bin/c++ -- 检查工作的 CXX 编译器:/usr/bin/c++ -- 工作 -- 检测 CXX 编译器 ABI 信息 -- 检测 CXX 编译器 ABI 信息 - 完成 -- 检测 CXX 编译特性 -- 检测 CXX 编译特性 - done -- 检查工作 C 编译器:/usr/bin/cc -- 检查工作 C 编译器:/usr/bin/cc -- 工作 -- 检测 C 编译器 ABI 信息 -- 检测 C 编译器 ABI 信息 - 完成 --检测 C 编译功能 - 检测 C 编译功能 - 完成 - 未设置构建类型 - 默认为发布 - 寻找 pthread.h - 寻找 pthread。h - 找到 - 寻找 pthread_create - 寻找 pthread_create - 未找到 - 在 pthreads 中寻找 pthread_create - 在 pthreads 中寻找 pthread_create - 未找到 - 在 pthread 中寻找 pthread_create - 在 pthread 中寻找 pthread_create - 找到 - - 找到的主题:TRUE
-- 找到 Protobuf:/usr/lib/x86_64-linux-gnu/libprotobuf.so
-- 选择的 BLAS 后端:Eigen -- 找不到 NNPACK(缺少:NNPACK_INCLUDE_DIR NNPACK_LIBRARY) -- 将尝试从源代码构建 NNPACK。如果有任何失败,请按照 NNPACK 先决条件安装步骤进行操作。cmake/External/nnpack.cmake:157 处的 CMake 警告(消息):选择安装 NNPACK,但未安装所需的 confu 和 ninja。因此,我们不会使用 NNPACK 构建。调用堆栈(最近的调用优先):cmake/Dependencies.cmake:52(包括) CMakeLists.txt:72(包括)
cmake/Dependencies.cmake:57 处的 CMake 警告(消息):未使用 NNPACK 编译。使用 -DUSE_NNPACK=OFF 调用堆栈(最近调用优先)抑制此警告:CMakeLists.txt:72(包括)
-- 找到 GFlags:/usr/include
-- 找到 gflags(包括:/usr/include,库:/usr/lib/x86_64-linux-gnu/libgflags.so) -- 找到系统 gflags 安装。-- 找到 Glog:/usr/include
-- 找到 glog(包括:/usr/include,库:/usr/lib/x86_64-linux-gnu/libglog.so) -- 找到系统 glog 安装。-- 找到 PythonInterp: /home/cama/anaconda3/bin/python (找到版本 "3.6") -- 找不到基准测试 (缺少: Benchmark_INCLUDE_DIR Benchmark_LIBRARY) -- 找到 Git: /usr/bin/git (找到版本 "2.7" .4") -- git 版本:v0.0.0 -- 版本:0.0。
-- 找到 lmdb (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/liblmdb.so) -- 找到 LevelDB: /usr/include
-- 找到 LevelDB (include: /usr/include,库:/usr/lib/x86_64-linux-gnu/libleveldb.so) -- 找到 Snappy:/usr/include
-- 找到 Snappy(包括:/usr/include,库:/usr/lib/libsnappy.so)- - 找不到 RocksDB(缺少:RocksDB_INCLUDE_DIR RocksDB_LIBRARIES)cmake/Dependencies.cmake:138 处的 CMake 警告(消息):未使用 RocksDB 编译。使用 -DUSE_ROCKSDB=OFF 调用堆栈(最近调用优先)抑制此警告:CMakeLists.txt:72(包括)
cmake/Dependencies.cmake:181 处的 CMake 警告(消息):未使用 OpenCV 编译。使用 -DUSE_OPENCV=OFF 调用堆栈(最近调用优先)抑制此警告:CMakeLists.txt:72(包括)
cmake/Dependencies.cmake:201 (find_package) 处的 CMake 警告:通过在 CMAKE_MODULE_PATH 中未提供“FindEigen3.cmake”,该项目已要求 CMake 查找“Eigen3”提供的包配置文件,但 CMake 没有找到。
找不到由“Eigen3”提供的具有以下任何名称的包配置文件:
Eigen3Config.cmake
eigen3-config.cmake
将“Eigen3”的安装前缀添加到 CMAKE_PREFIX_PATH 或将“Eigen3_DIR”设置为包含上述文件之一的目录。如果“Eigen3”提供单独的开发包或SDK,请确保已安装。调用堆栈(最近的调用优先):CMakeLists.txt:72(包括)
-- 找到 PythonInterp: /home/cama/anaconda3/bin/python (找到合适的版本 "3.6", 最低要求是 "2.7") -- 找到 PythonLibs: /home/cama/anaconda3/lib/libpython3.6m.so (找到合适的版本“3.6.0”,最低要求是“2.7”)-找到 NumPy:/home/cama/anaconda3/lib/python3.6/site-packages/numpy/core/include(找到版本“1.11.3 ") -- NumPy 版本。找到 1.11.3(包括:/home/cama/anaconda3/lib/python3.6/site-packages/numpy/core/include)-找不到 pybind11(缺少:pybind11_INCLUDE_DIR)-找不到 MPI_C(缺少: MPI_C_LIBRARIES MPI_C_INCLUDE_PATH) -- 找不到 MPI_CXX (missing: MPI_CXX_LIBRARIES MPI_CXX_INCLUDE_PATH) cmake/Dependencies.cmake:257 处的 CMake 警告(消息):未使用 MPI 编译。
-- 尝试 OpenMP C 标志 = [-fopenmp] -- 执行测试 OpenMP_FLAG_DETECTED -- 执行测试 OpenMP_FLAG_DETECTED - 成功 -- 尝试 OpenMP CXX 标志 = [-fopenmp] -- 执行测试 OpenMP_FLAG_DETECTED -- 执行测试 OpenMP_FLAG_DETECTED - 成功 -- 找到 OpenMP : -fopenmp
-- 添加 -fopenmp -- 检测到 CUDA: 8.0 -- 为 sm_61 添加了 CUDA NVCC 标志 -- 找到 libcuda: /usr/local/cuda-8.0/lib64/stubs/libcuda.so -- 找到 libnvrtc: / usr/local/cuda-8.0/lib64/libnvrtc.so -- 找到 CUDNN: /usr/local/cuda-8.0/include
-- 执行测试 HAS_BUILTIN_CPU_SUPPORTS -- 执行测试 HAS_BUILTIN_CPU_SUPPORTS - 成功 -- 此编译器具有 builtin_cpu_supports 功能。-- 执行测试 CAFFE2_NEED_TO_TURN_OFF_DEPRECATION_WARNING -- 执行测试 CAFFE2_NEED_TO_TURN_OFF_DEPRECATION_WARNING - 失败 -- 由于 glog 关闭弃用警告。-- GCC 4.9.3:将 gcc 和 gcc_s 库添加到链接行 -- 包括 NCCL 运算符 -- 由于没有 opencv 排除图像处理运算符 -- 由于没有 opencv 排除视频处理运算符 -- 排除 mkl 运算符,因为我们没有使用mkl -- 由于没有 MPI 支持,跳过了 MPI 运算符 -- 执行测试 CAFFE2_NEED_TO_TURN_OFF_DEPRECATION_WARNING -- 执行测试 CAFFE2_NEED_TO_TURN_OFF_DEPRECATION_WARNING - 失败 -- 由于 glog 关闭弃用警告。-- GCC 4.9.3:将 gcc 和 gcc_s 库添加到链接行 -- 包括 NCCL 运算符 -- 由于没有 opencv 排除图像处理运算符 -- 由于没有 opencv 排除视频处理运算符 -- 排除 mkl 运算符,因为我们没有使用mkl -- 由于没有 MPI 支持,跳过了 MPI 运算符 -- 执行测试 CAFFE2_NEED_TO_TURN_OFF_DEPRECATION_WARNING -- 执行测试 CAFFE2_NEED_TO_TURN_OFF_DEPRECATION_WARNING - 失败 -- 由于 glog 关闭弃用警告。-- GCC 4.9.3:将 gcc 和 gcc_s 库添加到链接行 -- 包括 NCCL 运算符 -- 由于没有 opencv 排除图像处理运算符 -- 由于没有 opencv 排除视频处理运算符 -- 排除 mkl 运算符,因为我们没有使用mkl -- 由于没有 MPI 支持,跳过了 MPI 运算符
-- 自动生成丢失的init .py 文件。
-- ******** 摘要 ******** -- 常规: -- Git 版本: -- 系统: Linux -- C++ 编译器: /usr/bin/c++ -- C++ 编译器版本: 4.9.3 -- Protobuf 编译器:/usr/bin/protoc -- CXX 标志: -fopenmp -Wno-deprecated -std=c++11 -fPIC -Wno-narrowing -- 构建类型: 发布
-- 编译定义:CAFFE2_USE_EIGEN_FOR_BLAS;CAFFE2_USE_GOOGLE_GLOG;CAFFE2_USE_GFLAGS;EIGEN_MPL2_ONLY
-- BUILD_SHARED_LIBS:开 -- BUILD_PYTHON:开 -- Python 版本:3.6.0 -- Python 库:/home/cama/anaconda3/lib/libpython3.6m.so -- USE_CUDA:开 -- CUDA 版本:8.0 -- USE_CNMEM:关闭——USE_NERVANA_GPU:关闭——USE_GLOG:开启——USE_GFLAGS:开启——USE_LMDB:开启——LMDB版本:0.9.10——USE_LEVELDB:开启——LevelDB版本:1.15——Snappy版本:1.1.0 -- USE_OPENCV: 关闭 -- USE_FFMPEG: -- USE_ZMQ: 关闭 -- USE_ROCKSDB: 关闭 -- USE_MPI: 关闭 -- USE_NCCL: 开启 -- USE_NNPACK: 关闭 -- USE_OPENMP: 开启 -- USE_REDIS: 关闭 -- USE_GLOO:ON -- 配置完成 -- 生成完成 -- 构建文件已写入:/home/chaoyang/caffe2-master/build
下面是make的正常输出。请关注最后几行,因为这些表示错误。
[ 77%] 构建 CXX 对象 caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/operators/conv_op_cache_cudnn_test.cc.o [ 77%] 链接 CXX 可执行二进制文件/conv_op_cache_cudnn_test libCaffe2_CPU.so:未定义对gflags::SetUsageMessage(std::string const&)'
libCaffe2_CPU.so: undefined reference to
google::protobuf::internal::WireFormatLite 的引用: :ReadString(google::protobuf::io::CodedInputStream*, std::string*)' libCaffe2_CPU.so: 对google::protobuf::Message::GetTypeName() const'
libCaffe2_CPU.so: undefined reference to
google::protobuf::internal::StringTypeHandlerBase::Delete(std::string*)' 的未定义引用libCaffe2_GPU.so:未定义引用google::protobuf::internal::kEmptyString'
libCaffe2_CPU.so: undefined reference to
google::protobuf::MessageLite::SerializeToString(std::string*) const' libCaffe2_CPU.so:未定义引用google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
libCaffe2_GPU.so: undefined reference to
google::protobuf::TextFormat::ParseFromString(std::string const&, google::protobuf::Message*)' libCaffe2_GPU.so: 未定义的引用google::base::CheckOpMessageBuilder::NewString()'
libCaffe2_CPU.so: undefined reference to
google::protobuf::internal::WireFormatLite::WriteBytes(int, std::string const&, google::protobuf::io::CodedOutputStream*)' libCaffe2_GPU.so: 未定义引用google::protobuf::internal::StringTypeHandlerBase::New()'
libCaffe2_CPU.so: undefined reference to
gflags::ParseCommandLineFlags(int*, char***, bool)' libCaffe2_GPU.so: 未定义引用google::protobuf::Message::ShortDebugString() const'
libCaffe2_GPU.so: undefined reference to
google::protobuf::MessageLite::ParseFromString(std::string const&)' libCaffe2_GPU.so: 未定义引用gflags::FlagRegisterer::FlagRegisterer(char const*, char const*, char const*, char const*, void*, void*)'
libCaffe2_CPU.so: undefined reference to
google::protobuf::internal::WireFormatLite ::WriteString(int, std::string const&, google::protobuf::io::CodedOutputStream*)' libCaffe2_GPU.so: 未定义对google::protobuf::internal::ParseNamedEnum(google::protobuf::EnumDescriptor const*, std::string const&, int*)'
libCaffe2_GPU.so: undefined reference to
google::protobuf::MessageLite::SerializeAsString() const' libCaffe2_CPU.so 的引用:未定义对google::protobuf::DescriptorPool::FindFileByName(std::string const&) const'
libCaffe2_CPU.so: undefined reference to
gflags::ProgramUsage()' libCaffe2_CPU.so 的引用:未定义引用google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::string*)'
libCaffe2_CPU.so: undefined reference to
[ 3]: * [caffe2/binaries/conv_op_cache_cudnn_test] 错误 1 make[3]: 离开目录 '/home/chaoyang/caffe2-master/build' CMakeFiles/Makefile2:1429: recipe for target 'caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/全部失败的制作[2]:[caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/all] 错误 2 make[2]:离开目录 '/home/chaoyang/caffe2-master/build' Makefile:138:目标 'all' 的配方失败 make[1]:[all] 错误 2 make[1]: 离开目录 '/home/chaoyang/caffe2-master/build' Makefile:4: recipe for target 'all' failed make: * [all] Error 2
似乎是 cudnn 库导致了这个错误,而我已经在 ubuntu 中成功使用了 cudnn-v5.1 和 cuda-8.0,特别是在 matconvnet 中,它需要 cuda 和 cudnn 来加快计算速度。而且似乎没有其他人以前遇到过这个错误,所以任何建议都将不胜感激!