【发布时间】:2018-04-15 08:19:09
【问题描述】:
我是 Caffe 库的初学者。 我只是在本教程示例中编译和测试代码:https://github.com/DeepLearningStudy/caffe/blob/master/examples/ex4_layer/main.cpp。 我有一个 CPU_ONLY 构建,所以编译给出了错误 undefined reference to `void caffe::caffe_gpu_dot(int, double const*, double const*, double*)' 。 通过调用函数 Forward() 发出。 为了完成编译,我修改了 argmax 层代码并将 forward_cpu() 作为公共函数成员。
尽管有一行: Caffe::set_mode(Caffe::CPU) 似乎是对 gpu 方法的前向函数调用。
这是我的 CMakeLists.txt :
cmake_minimum_required(VERSION 2.8.8)
项目(hellocaffe)
如果(开启) 如果(不是 OpenCV_FOUND) 设置(Caffe_OpenCV_CONFIG_PATH “/usr/share/OpenCV”) 如果(Caffe_OpenCV_CONFIG_PATH) get_filename_component(Caffe_OpenCV_CONFIG_PATH ${Caffe_OpenCV_CONFIG_PATH} ABSOLUTE)
if(EXISTS ${Caffe_OpenCV_CONFIG_PATH} 而不是目标 opencv_core)
消息(状态“Caffe:使用来自 ${Caffe_OpenCV_CONFIG_PATH} 的 OpenCV 配置”)
包括(${Caffe_OpenCV_CONFIG_PATH}/OpenCVModules.cmake)
万一()
别的()
find_package(需要 OpenCV)
万一()
未设置(Caffe_OpenCV_CONFIG_PATH)
endif() endif()
计算路径
get_filename_component(Caffe_CMAKE_DIR "/home/nikfio/bin/caffe/cmake" 路径)
FIND_PACKAGE(Caffe)
设置(Caffe_INCLUDE_DIRS /home/nikfio/bin/caffe/include) list(APPEND Caffe_INCLUDE_DIRS "/usr/include") 列表(APPEND Caffe_INCLUDE_DIRS“/usr/local/cuda-9.0/include”) list(APPEND Caffe_INCLUDE_DIRS "/usr/include/opencv") list(APPEND Caffe_INCLUDE_DIRS "/usr/include/atlas") list(APPEND Caffe_INCLUDE_DIRS "/home/nikfio/bin/caffe/build/src/")
include_directories(${Caffe_INCLUDE_DIRS})
定义
set(Caffe_DEFINITIONS "-DUSE_OPENCV;-DUSE_LMDB;-DUSE_LEVELDB")
设置(CAFFE_DIR /home/nikfio/bin/caffe)
set(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_logreg_mnist.cpp)
target_link_libraries(ex_logreg_mnist ${LIBRARY} -lboost_system)
有人知道原因或有更好的解决方案吗?
问候
【问题讨论】: