1. 程式人生 > >ubuntu下c++編譯連結caffe的工程

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 [email protected] $(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*** 就可以了~~