1、文件目录结构

caffe-root

  |--include

  |--example

  |--modules

        |--test.h

        |--test.cpp

  |--python

  |--src

  |--tools

modules为我们添加的目录和文件

2、修改Makefile文件

(1)添加生成动态链接库文件名称

DYNAMIC_NAME_MODULES:=$(LIB_BUILD_DIR)/libmodules.so

(2)获取所有源文件

# CXX_SRCS are the source files excluding the test ones.
CXX_SRCS := $(shell find src/$(PROJECT) ! -name "test_*.cpp" -name "*.cpp")
# CU_SRCS are the cuda source files
CU_SRCS := $(shell find src/$(PROJECT) ! -name "test_*.cu" -name "*.cu")
# MODULES_SRCS are the source files excluding the test ones.
MODULES_SRCS := $(shell find modules ! -name "test_*.cpp" -name "*.cpp")

(3)设置源文件对应的目标文件

# The objects corresponding to the source files
# These objects will be linked into the final shared library, so we
# exclude the tool, example, and test objects.
CXX_OBJS := $(addprefix $(BUILD_DIR)/, ${CXX_SRCS:.cpp=.o})
CU_OBJS := $(addprefix $(BUILD_DIR)/cuda/, ${CU_SRCS:.cu=.o})
MODULES_OBJS := $(addprefix $(BUILD_DIR)/, ${MODULES_SRCS:.cpp=.o})

(4)生成链接库命令

$(DYNAMIC_NAME_MODULES): $(MODULES_OBJS) $(DYNAMIC_NAME) | $(LIB_BUILD_DIR)
@ echo LD -o $@
$(Q)$(CXX) -shared -o $@ $(MODULES_OBJS) $(LINKFLAGS) $(LDFLAGS) -l$(LIBRARY_NAME) -Wl,-rpath,$(ORIGIN)/./lib

注意:$(DYNAMIC_NAME) 为 caffe.so,因为modules中的文件用到了caffe中的函数,如果为用到则可以去掉该变量

(5)添加到targets

lib: $(STATIC_NAME) $(DYNAMIC_NAME) $(DYNAMIC_NAME_MODULES)

3、$ cd CAFFE_ROOT

$ make -j

生成的链接库位于 CAFFE_ROOT/build/lib 中

最新文章

  1. C++: 主要知识点
  2. 兼容IE7音乐播放器之jplayer的使用
  3. js this理解
  4. (转)客户端触发Asp.net中服务端控件事件
  5. CRM 2016 子表单中N:1关系 字段要求与新建时的关系
  6. (三)、Express 路由、静态文件、
  7. Java in ACM/ICPC
  8. C# XML序列化帮助类代码
  9. 谷歌浏览器javascript调试教程
  10. atitit.(设计模式1)--—职责链(chain of responsibility)最佳实践O7 转换日期
  11. 规范 : login 对象的account
  12. 学习CSS记录:CSS文件引入到HTML中
  13. U-boot-1.1.4中关于hello_world.srec出错
  14. ES6-LET,变量提升,函数提升
  15. Java学习之路-Hessian学习
  16. device eth0 does not seem to be present, delaying initialization(转)
  17. sas 变量类型转换
  18. Access时间日期函数大全
  19. mysqlsandbox
  20. c++ #ifdef的用法

热门文章

  1. Ubuntu系统多屏幕时 触摸屏如何分屏定位
  2. linux 修改内核参数 如何生效?
  3. CF662C Binary Table FWT
  4. dpkg打包与解包
  5. Java 面试题 队列
  6. 记一次MongoDB裸奔
  7. browserify运行原理分析
  8. PyCharm Tips 常用操作帮助
  9. DNS之BIND使用小结(Forward转发)
  10. RocketMQ 简单梳理 及 集群部署笔记