【问题标题】:CMakeFiles/Makefile2:1429: recipe for target 'caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/all' failedCMakeFiles/Makefile2:1429:目标“caffe2/CMakeFiles/conv_op_cache_cudnn_test.dir/all”的配方失败
【发布时间】: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


    【解决方案1】:

    我很难按照日志进行操作,但是您的命令似乎不对。 我建议你做cd build && cmake .. && sudo make install

    【讨论】:

    • 我用过这个命令,发现cmake ..只是一个配置检查工具,打印出来,实际上并不会编译caffe2。
    • 对,cmake 创建了一个Makefile,然后你可以用它来编译make 的Caffe2
    • 我认为这与我的网络有关。因为我无法使用 sudo apt-get update 进行更新,也无法安装 caffe2 安装页面所需的某些软件包。我没有使用服务器,而是切换到本地计算机,按照安装步骤,我已经成功编译caffe2。
    • 感谢您的承诺!
    猜你喜欢
    • 2020-11-15
    • 2022-07-02
    • 2020-04-23
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多