CPU_ONLY构建:编译函数 Forward() 会给出错误"undefined reference..."

CPU_ONLY build: compiling the function Forward() gives error "undefined reference..."

本文关键字:出错 错误 undefined reference 构建 ONLY 编译 Forward 函数 CPU      更新时间:2023-10-16

我是Caffe库的初学者。我只是在这个教程示例中编译和测试代码:https://github.com/DeepLearningStudy/caffe/blob/master/examples/ex4_layer/main.cpp。我有一个CPU_ONLY版本,所以编译会给出对"void caffe::caffe_gpu_dot(int,double const*,double const*,double*)"的错误未定义引用。通过调用函数Forward()发出。为了完成编译,我修改了argmax层代码,并将forward_cpu()作为公共函数成员。

尽管有这样一句话:Caffe::设置模式(Caffe::CPU)似乎正向函数调用gpu方法。

这是我的CMakeLists.txt: cmake_minimum_required(VERSION 2.8.8)

project (hellocaffe)

if(ON) if(NOT OpenCV_FOUND) set(Caffe_OpenCV_CONFIG_PATH "/usr/share/OpenCV") if(Caffe_OpenCV_CONFIG_PATH) get_filename_component(Caffe_OpenCV_CONFIG_PATH ${Caffe_OpenCV_CONFIG_PATH} ABSOLUTE)

if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} AND NOT TARGET opencv_core)
message(STATUS "Caffe: using OpenCV config from ${Caffe_OpenCV_CONFIG_PATH}")
include(${Caffe_OpenCV_CONFIG_PATH}/OpenCVModules.cmake) 
endif()
else()
find_package(OpenCV REQUIRED)
endif()
unset(Caffe_OpenCV_CONFIG_PATH)

endif()endif()

计算路径

get_filename_component(Caffe_CMAKE_DIR"/home/nikfio/bin/Caffe/CMAKE"PATH)

FIND_PAGE(咖啡)

设置(Caffe_INCLUDE_DIRS/home/nikfio/bin/Caffe/INCLUDE)列表(APPEND Caffe_INCLUDE_DIRS"/usr/INCLUDE")列表(APPEND Caffe_INCLUDE_DIRS"/usr/local/cuda-9.0/INCLUDE")列表(APPEND Caffe_INCLUDE_DIRS"/usr/INCLUDE/opencv")列表(APPEND Caffe_INCLUDE_DIRS"/usr/INCLUDE/atlas")列表(APPEND Caffe_INCLUDE_DIRS"/home/nikfio/bin/Caffe/build/src/")

include_directories(${Caffe_include_DIRS})

定义

设置(Caffe_DINITINGS"-DUSE_OPENCV;-DUSE_LMDB;-DUSE_LEVELDB")

设置(CAFFE_DIR/home/nikfio/bin/CAFFE)

设置(LIBRARY-L${CAFFE_DIR}/build/lib-L/usr/local/Cellar/opencv/2.4.11_1/lib/-lglog-lprotobuf-lpython2.7-lcaffe-lm-lpthread-lopencv_core-lopencv _imgproc-lopencv_highgui)

add_executable(ex_logreg_mnist ex_loggre_mnist.cpp)

target_link_libraries(ex_logreg_mnist${LIBRARY}-lhostrongystem)

有人知道为什么或者有更好的解决方案吗?

问候

在定义行中添加以下内容:

set(Caffe_DEFINITIONS "-DUSE_OPENCV;-DUSE_LMDB;-DUSE_LEVELDB;-DCPU_ONLY=1")

CPU_ONLY=1应正确注释掉所有GPU代码。

相关文章: