【发布时间】:2017-11-04 12:40:34
【问题描述】:
当我安装了 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 编译特性 - 完成
-- 检查工作的 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 - 找到
-- 找到的主题:是的
-- 找到 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.0
-- 执行测试 HAVE_CXX_FLAG_STD_CXX11
-- 执行测试 HAVE_CXX_FLAG_STD_CXX11 - 成功
-- 执行测试 HAVE_CXX_FLAG_WALL
-- 执行测试 HAVE_CXX_FLAG_WALL - 成功
-- 执行测试 HAVE_CXX_FLAG_WEXTRA
-- 执行测试 HAVE_CXX_FLAG_WEXTRA - 成功
-- 执行测试 HAVE_CXX_FLAG_WSHADOW
-- 执行测试 HAVE_CXX_FLAG_WSHADOW - 成功
-- 执行测试 HAVE_CXX_FLAG_WERROR
-- 执行测试 HAVE_CXX_FLAG_WERROR - 成功
-- 执行测试 HAVE_CXX_FLAG_PEDANTIC
-- 执行测试 HAVE_CXX_FLAG_PEDANTIC - 成功
-- 执行测试 HAVE_CXX_FLAG_PEDANTIC_ERRORS
-- 执行测试 HAVE_CXX_FLAG_PEDANTIC_ERRORS - 成功
-- 执行测试 HAVE_CXX_FLAG_WSHORTEN_64_TO_32
-- 执行测试 HAVE_CXX_FLAG_WSHORTEN_64_TO_32 - 失败
-- 执行测试 HAVE_CXX_FLAG_WFLOAT_EQUAL
-- 执行测试 HAVE_CXX_FLAG_WFLOAT_EQUAL - 成功
-- 执行测试 HAVE_CXX_FLAG_FSTRICT_ALIASING
-- 执行测试 HAVE_CXX_FLAG_FSTRICT_ALIASING - 成功
-- 执行测试 HAVE_CXX_FLAG_WZERO_AS_NULL_POINTER_CONSTANT
-- 执行测试 HAVE_CXX_FLAG_WZERO_AS_NULL_POINTER_CONSTANT - 成功
-- 执行测试 HAVE_CXX_FLAG_WSTRICT_ALIASING
-- 执行测试 HAVE_CXX_FLAG_WSTRICT_ALIASING - 成功
-- 执行测试 HAVE_CXX_FLAG_WTHREAD_SAFETY
-- 执行测试 HAVE_CXX_FLAG_WTHREAD_SAFETY - 失败
-- 执行测试 HAVE_CXX_FLAG_COVERAGE
-- 执行测试 HAVE_CXX_FLAG_COVERAGE - 成功
-- 执行测试 HAVE_STD_REGEX
-- 执行测试 HAVE_STD_REGEX -- 成功
-- 执行测试 HAVE_GNU_POSIX_REGEX
-- 执行测试 HAVE_GNU_POSIX_REGEX -- 编译失败
-- 执行测试 HAVE_POSIX_REGEX
-- 执行测试 HAVE_POSIX_REGEX -- 成功
-- 执行测试 HAVE_STEADY_CLOCK
-- 执行测试 HAVE_STEADY_CLOCK -- 成功
-- 执行测试 BENCHMARK_HAS_CXX03_FLAG
-- 执行测试 BENCHMARK_HAS_CXX03_FLAG - 成功
-- 找到 LMDB:/usr/include
-- 找到lmdb(包括:/usr/include,库:/usr/lib/x86_64-linux-gnu/liblmdb.so)
-- 找到 LevelDB:/usr/include
-- 找到LevelDB(包括:/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”到包含上述文件之一的目录。如果“特征 3” 提供单独的开发包或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(缺少:MPI_CXX_LIBRARIES MPI_CXX_INCLUDE_PATH) cmake/Dependencies.cmake:257 处的 CMake 警告(消息): 不使用 MPI 编译。使用 -DUSE_MPI=OFF 抑制此警告 调用堆栈(最近的调用优先): CMakeLists.txt:72(包括)
-- 尝试 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
-- 找到 cuDNN:v5.1.5(包括:/usr/local/cuda-8.0/include,库:/usr/local/cuda-8.0/lib64/libcudnn.so)
-- 找不到 NCCL(缺少:NCCL_INCLUDE_DIR NCCL_LIBRARY)
-- NCCL:/home/chaoyang/caffe2-master/third_party/nccl/build/lib/libnccl_static.a
-- 找不到 CUB(缺少:CUB_INCLUDE_DIR)
-- 找不到 Gloo(缺少:Gloo_INCLUDE_DIR Gloo_LIBRARY)
-- 找到 CUDA:/usr/local/cuda-8.0(找到合适的版本“8.0”,最低要求是“7.0”)
-- 检测到 CUDA:8.0
-- 找到 libcuda:/usr/local/cuda-8.0/lib64/stubs/libcuda.so
-- 找到 libnvrtc:/usr/local/cuda-8.0/lib64/libnvrtc.so
-- 执行测试 CAFFE2_LONG_IS_INT32_OR_64
-- 执行测试 CAFFE2_LONG_IS_INT32_OR_64 - 成功
-- 不需要单独定义long。
-- 执行测试 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 运算符
-- 自动生成丢失的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 : ON -- 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 -- 活泼的版本:1.1.0 -- USE_OPENCV:关闭 -- USE_FFMPEG: -- USE_ZMQ : 关闭 -- USE_ROCKSDB : 关闭 -- USE_MPI : 关闭 -- USE_NCCL:开 -- USE_NNPACK : 关闭 -- USE_OPENMP:开 -- USE_REDIS : 关闭 -- USE_GLOO:开 -- 配置完成 -- 生成完成 -- 构建文件已写入:/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 togoogle::protobuf::internal::WireFormatLite::ReadString(google::protobuf::io::CodedInputStream*, std::string*)'
libCaffe2_CPU.so:未定义对google::protobuf::Message::GetTypeName() const'
libCaffe2_CPU.so: undefined reference togoogle::protobuf::internal::StringTypeHandlerBase::Delete(std::string*)' 的引用
libCaffe2_GPU.so:未定义引用 google::protobuf::internal::kEmptyString'
libCaffe2_CPU.so: undefined reference togoogle::protobuf::MessageLite::SerializeToString(std::string*) const'
libCaffe2_CPU.so:未定义引用 google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const*, void (*)(std::string const&))'
libCaffe2_GPU.so: undefined reference togoogle::protobuf::TextFormat::ParseFromString(std::string const&, google::protobuf::Message*)'
libCaffe2_GPU.so:未定义引用 google::base::CheckOpMessageBuilder::NewString()'
libCaffe2_CPU.so: undefined reference togoogle::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 togflags::ParseCommandLineFlags(int*, char***, bool)' 的未定义引用
libCaffe2_GPU.so:未定义对google::protobuf::Message::ShortDebugString() const'
libCaffe2_GPU.so: undefined reference togoogle::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 togoogle::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 togoogle::protobuf::MessageLite::SerializeAsString() const'
libCaffe2_CPU.so:对google::protobuf::DescriptorPool::FindFileByName(std::string const&) const'
libCaffe2_CPU.so: undefined reference togflags::ProgramUsage()' 的未定义引用
libCaffe2_CPU.so:未定义引用 google::protobuf::internal::WireFormatLite::ReadBytes(google::protobuf::io::CodedInputStream*, std::string*)'
libCaffe2_CPU.so: undefined reference togoogle::protobuf::Message::InitializationErrorString() const'
collect2:错误:ld 返回 1 个退出状态
caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/build.make:130:目标“caffe2/binaries/conv_op_cache_cudnn_test”的配方失败
make[3]: * [caffe2/binaries/conv_op_cache_cudnn_test] 错误 1
make[3]: 离开目录'/home/chaoyang/caffe2-master/build'
CMakeFiles/Makefile2:1429:目标“caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/all”的配方失败
make[2]: [caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/all] 错误 2
make[2]: 离开目录'/home/chaoyang/caffe2-master/build'
Makefile:138:目标“全部”的配方失败
make[1]: [all] 错误 2
make[1]: 离开目录'/home/chaoyang/caffe2-master/build'
Makefile:4:目标“全部”的配方失败
make: * [all] 错误 2
似乎是cudnn库导致了这个错误,而我已经在ubuntu中成功使用了cudnn-v5.1和cuda-8.0,特别是在matconvnet中,它需要cuda和cudnn来加速计算速度。而且似乎没有其他人以前遇到过这个错误,所以任何建议都将不胜感激!
【问题讨论】:
标签: caffe2