ubuntu下c++编译链接caffe的工程

最近在做深度网络相关的项目,我们通常可以从github上download很多相关的源码,但是在我们的机子上编译的时候通常会遇到很多问题,将我最近踩的坑做了一些总结,希望对大家有所帮助。

1.如果直接g++  ×××.cpp 出现下面或者是出现某种语法错误之类的

[Click and drag to move]

 一般来说是你的编译器没有满足c++11规则,此时一般要加上-std=c++11

2.好吧,你心想加上就好了,于是 g++ ×××.cpp -std=c++11于是出现了:

××××××cannot find caffe/caffe.h:×××××××

这时候你想起来了你caffe的库目录和你系统默认的包含库目录不一致,链接库也是不一样的,然后你就想加进来啊

于是:

g++ ××××.cpp -std=c++11 -I /path/to/caffe/include -L/path/to/caffe/build/lib/

结果还是不行,又一大堆啥没定义。。。

这时候那个气啊

其实我们可以这么做
1.确保本机安装caffe
参考:https://blog.csdn.net/QLULIBIN/article/details/80722788 从第7点开始看,特别注意的是那些依赖库没装的要记得装上
当然你可以参考官网:http://caffe.berkeleyvision.org/installation.html
记得测试下再进行下一步

2.确保安装openblas
参考:https://blog.csdn.net/y5492853/article/details/79558194

3.进入/caffe/path/include/caffe 查看是否有proto文件夹
如果没有的话:
    将/caffe/path/build/src/caffe/ 下的proto 文件夹拷贝到上述目录下
4.1 将/caffe/path/build/lib/libcaffe.so与libcaffe.so.1.0.0-rc3复制到 /usr/lib下
4.2 将/caffe/path/include/下的整个caffe文件夹复制到 /usr/include 下

5.执行文件夹内的makefile(记得对照修改相应库目录,动态链接库)

makefile文件可以参照:

CC= g++
CFLAGS = -O3 -std=c++11
#CFLAGS = -ggdb

INCS = `pkg-config --cflags opencv`
LIBS = `pkg-config --libs opencv`
LIBS+=-lboost_system -lcaffe -lglog
OBJS = mtcnn.o
BIN =a
INCS+=-I/usr/local/inluce #/path/to/openblas'inclue
LIBS+=-L /usr/local/lib  #/path/to/openblas'lib

all : $(BIN)

a: $(OBJS)
    $(CC) $(OBJS) -o $@ $(LIBS)

%.o:%.cpp
    $(CC) $(CFLAGS)  $(INCS) -c $<

clean:
    rm -f $(OBJS) $(BIN)

然后

make
6.不出意外应该可以了
附:如果出现××× DSO is missing 首先locate下该文件,如果存在,那就是放的位置不对,因为该文件的链接路径是/usr/lib
所以你得拷过来
如果出现某种语法不符合规则,那应该加上c++11的标准
如果出现一大堆的。。。。找不到之类的,别怀疑,肯定不是代码问题,这时候应该去找下你libs有没有包含该库。没有的话
在makefile 文件中LIBS+=-l*** 就可以了~~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值