Closed jufeng123 closed 5 years ago
补充一点,我编译完成后,~/build/lib里面没有protobuf.a,我从其他地方引用了一个,不知道会不会是这里的问题,是不是caffe2里面的CmakeList还有需要需改的地方。
你用的新版本的caffe2吗?
DaSiamRPN这个工程也编译通过了吗?请把你用的ide、系统信息也提供一下呀。
我用的是旧版的caffe2,就是在编译DaSiamRPN的时候报的这个错 ubuntu16.04 cuda 9.0 cudnn 7.0 protobuf 3.5.0 python 2.7
IDE 是NSIGHT 9.0
qt的DaSiamRPNTracker.pro这个工程配置文件中除了unix:!macx: LIBS += -L$$PWD/../../../../usr/local/lib/ -lcaffe2_yolo_ops_gpu(不需要)之外的其他so文件你都引入进你的NSIGHT ide里了吗,看你的编译错误提示 都是‘未定义的引用’,表明有头文件声明,但是具体的实现没有定义,也就是对应的so没引进来。
加了我都添加了,现在的问题是我的这版caffe2编译后,在他的~/build/lib路径下没有生成caffe2_observers.so,protobuf.so,我是从另一个版本的caffe2里引用的这些库,感觉这里可能有问题,能不能给我发下你的caffe2的CmakeList
make install到系统目录下呀。caffe2_observers.so可能没用到,你的caffe2是有多旧啊这个都没有。
`cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
project(Caffe2 CXX C)
set(CAFFE2_VERSION_MAJOR 0) set(CAFFE2_VERSION_MINOR 8) set(CAFFE2_VERSION_PATCH 2) set(CAFFE2_VERSION "${CAFFE2_VERSION_MAJOR}.${CAFFE2_VERSION_MINOR}.${CAFFE2_VERSION_PATCH}")
set(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO ON)
include(CMakeDependentOption) option(BUILD_BINARY "Build C++ binaries" ON) option(BUILD_DOCS "Build documentation" OFF) option(BUILD_CUSTOM_PROTOBUF "Build and use Caffe2's own protobuf under third_party" ON) option(BUILD_PYTHON "Build Python binaries" ON) option(BUILD_SHARED_LIBS "Build libcaffe2.so" ON) cmake_dependent_option( CAFFE2_LINK_LOCAL_PROTOBUF "If set, build protobuf inside libcaffe2.so." ON "BUILD_SHARED_LIBS AND BUILD_CUSTOM_PROTOBUF" OFF) cmake_dependent_option( CAFFE2_USE_MSVC_STATIC_RUNTIME "Using MSVC static runtime libraries" ON "NOT BUILD_SHARED_LIBS" OFF) option(BUILD_TEST "Build C++ test binaries (need gtest and gbenchmark)" ON) option(USE_ACL "Use ARM Compute Library" OFF) option(USE_ASAN "Use Address Sanitizer" OFF) option(USE_ATEN "Use ATen" OFF) option(USE_CUDA "Use Cuda" ON) option(USE_FFMPEG "Use ffmpeg" OFF) option(USE_GFLAGS "Use GFLAGS" ON) option(USE_GLOG "Use GLOG" ON) option(USE_GLOO "Use Gloo" ON) option(USE_LEVELDB "Use LEVELDB" ON) option(USE_LITE_PROTO "Use lite protobuf instead of full." OFF) option(USE_LMDB "Use LMDB" ON) option(USE_METAL "Use Metal for iOS build" ON) option(USE_MOBILE_OPENGL "Use OpenGL for mobile code" ON) option(USE_MPI "Use MPI" ON) option(USE_NATIVE_ARCH "Use -march=native" OFF) option(USE_NCCL "Use NCCL" ON) option(USE_NERVANA_GPU "Use Nervana GPU backend" OFF) option(USE_NNAPI "Use NNAPI" OFF) option(USE_NNPACK "Use NNPACK" ON) option(USE_NUMA "Use NUMA (only available on Linux)" ON) option(USE_OBSERVERS "Use observers module." OFF) option(USE_OPENCV "Use openCV" ON) option(USE_OPENMP "Use OpenMP for parallel code" OFF) option(USE_PROF "Use profiling" OFF) option(USE_REDIS "Use Redis" OFF) option(USE_ROCKSDB "Use RocksDB" OFF) option(USE_SNPE "Use Qualcomm's SNPE library" OFF) option(USE_TENSORRT "Using Nvidia TensorRT library" OFF) option(USE_ZMQ "Use ZMQ" OFF) option(USE_ZSTD "Use ZSTD" OFF)
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
if (MSVC AND ${BUILD_SHARED_LIBS}) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
enable_testing()
include(cmake/MiscCheck.cmake) include(cmake/BuildVariables.cmake)
include(ExternalProject)
include(cmake/Utils.cmake) include(cmake/public/utils.cmake)
set(CAFFE2_WHITELIST "" CACHE STRING "A whitelist file of files that one should build.")
if(NOT CMAKE_BUILD_TYPE) message(STATUS "Build type not set - defaulting to Release") set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build from: Debug Release RelWithDebInfo MinSizeRel Coverage." FORCE) endif()
include(cmake/Dependencies.cmake)
include(cmake/Whitelist.cmake)
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8.0 AND NOT ANDROID) message(STATUS "GCC ${CMAKE_CXX_COMPILER_VERSION}: Adding gcc and gcc_s libs to link line") list(APPEND Caffe2_DEPENDENCY_LIBS gcc_s gcc) endif()
set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 11) if(NOT MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -fPIC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-partial-specialization") else() foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) if (${CAFFE2_USE_MSVC_STATIC_RUNTIME}) if(${flag_var} MATCHES "/MD") string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") endif(${flag_var} MATCHES "/MD") else() if(${flag_var} MATCHES "/MT") string(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}") endif() endif() set(${flag_var} "${${flag_var}} /MP /bigobj") endforeach(flag_var) endif()
if(ANDROID) if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s") else() set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") endif() endif()
if(NOT APPLE AND UNIX) list(APPEND Caffe2_DEPENDENCY_LIBS dl) endif()
include_directories(BEFORE ${PROJECT_SOURCE_DIR})
include_directories(BEFORE ${PROJECT_BINARY_DIR})
add_subdirectory(caffe/proto)
add_subdirectory(caffe2)
if(BUILD_DOCS)
find_package(Doxygen) if (DOXYGEN_FOUND) message("Generating documentation")
set(DOXYGEN_C_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/caffe2/.Doxyfile-c)
set(DOXYGEN_C_OUT ${CMAKE_CURRENT_SOURCE_DIR}/docs/caffe2/Doxyfile-c)
set(DOXYGEN_P_IN ${CMAKE_CURRENT_SOURCE_DIR}/docs/caffe2/.Doxyfile-python)
set(DOXYGEN_P_OUT ${CMAKE_CURRENT_SOURCE_DIR}/docs/caffe2/Doxyfile-python)
if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/docs)
file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/docs)
endif (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/docs)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs)
configure_file(${DOXYGEN_C_IN} ${DOXYGEN_C_OUT} @ONLY)
configure_file(${DOXYGEN_P_IN} ${DOXYGEN_P_OUT} @ONLY)
add_custom_target(doc_doxygen_c ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_C_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating C++ API documentation with Doxygen"
VERBATIM)
add_custom_target(doc_doxygen_python ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_P_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating Python API documentation with Doxygen"
VERBATIM)
else (DOXYGEN_FOUND) message(FATAL_ERROR "Doxygen needs to be installed to generate the documentation") endif (DOXYGEN_FOUND) endif (BUILD_DOCS)
if(NOT TARGET caffe2_uninstall) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake IMMEDIATE @ONLY)
add_custom_target(caffe2_uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) endif()
if ((NOT USE_GLOG) OR (NOT USE_GFLAGS) OR BUILD_CUSTOM_PROTOBUF) message(WARNING "Generated cmake files are only fully tested if one builds " "with system glog, gflags, and protobuf. Other settings may " "generate files that are not well tested.") endif()
if (USE_CUDA)
endif()
if (BUILD_SHARED_LIBS) configure_file( ${PROJECT_SOURCE_DIR}/cmake/Caffe2ConfigVersion.cmake.in ${PROJECT_BINARY_DIR}/Caffe2ConfigVersion.cmake @ONLY) configure_file( ${PROJECT_SOURCE_DIR}/cmake/Caffe2Config.cmake.in ${PROJECT_BINARY_DIR}/Caffe2Config.cmake @ONLY) install(FILES ${PROJECT_BINARY_DIR}/Caffe2ConfigVersion.cmake ${PROJECT_BINARY_DIR}/Caffe2Config.cmake DESTINATION share/cmake/Caffe2 COMPONENT dev) install(FILES ${PROJECT_SOURCE_DIR}/cmake/public/cuda.cmake ${PROJECT_SOURCE_DIR}/cmake/public/glog.cmake ${PROJECT_SOURCE_DIR}/cmake/public/gflags.cmake ${PROJECT_SOURCE_DIR}/cmake/public/protobuf.cmake ${PROJECT_SOURCE_DIR}/cmake/public/threads.cmake ${PROJECT_SOURCE_DIR}/cmake/public/utils.cmake DESTINATION share/cmake/Caffe2/public COMPONENT dev) install(EXPORT Caffe2Targets DESTINATION share/cmake/Caffe2 FILE Caffe2Targets.cmake COMPONENT dev) else() message(WARNING "Generated cmake files are only available when building " "shared libs.") endif()
add_subdirectory(modules)
if (BUILD_BINARY) add_subdirectory(binaries) endif()
include(cmake/Summary.cmake) caffe2_print_configuration_summary()`
我的caffe2就是用的你下面链接给的那个,0.8.1的,缺的文件又从官方下载补充了一下
我大概发现问题了,链接中的caffe2_old,对很多组件进行了删减,能不能将您使用的caffe2压缩上传一下
链接: https://pan.baidu.com/s/1ZUOB59EZ8wpnsMPjFunEBw 提取码: txu7
您好,请问我的caffe2编译通过,但在调用时有如下问题,您遇到过吗?
/home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:219:对‘typeinfo for caffe2::EnforceNotMet’未定义的引用 /home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:220:对‘caffe2::EnforceNotMet::EnforceNotMet(char const, int, char const, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, void const)’未定义的引用
/home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:220:对‘typeinfo for caffe2::EnforceNotMet’未定义的引用
/home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:242:对‘caffe2::MessageLogger::MessageLogger(char const, int, int)’未定义的引用
/home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:242:对‘caffe2::MessageLogger::~MessageLogger()’未定义的引用
/home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:306:对‘caffe2::CUDAContext::CUDAContext(int)’未定义的引用
/home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:327:对‘caffe2::CUDAContext::CUDAContext(int)’未定义的引用
/home/hx/cuda-workspace/Dasiamrpn/Debug/../dasiamrpntracker.cpp:242:对‘caffe2::MessageLogger::~MessageLogger()’未定义的引用