caffe matio问题
http://blog.csdn.net/houqiqi/article/details/46469981
注:如果指令行模式實(shí)在解決不了/lib/libcaffe.so: undefined reference to `Mat_VarReadDataLinear'問題,可以嘗試在QT下進(jìn)行訓(xùn)練和測(cè)試。
1, 下載matio(http://sourceforge.NET/projects/matio/)
2,,安裝
$ tar zxf matio-X.Y.Z.tar.gz
$ cd matio-X.Y.Z
$ ./configure
$ make
$ make check
$ make install
2* 沒有管理員權(quán)限的話 $ tar zxf matio-X.Y.Z.tar.gz
$ cd matio-X.Y.Z
$ ./configure
$ make
$ make check
在caffe 的 Makefile.config 中的INCLUDE_DIRS 中添加 matio 的 src路徑, LIBRARY_DIRS 中添加 src/.libs 貼出來(lái)我的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include ?/home/baw010/houqiqi/dependencies/matio-1.5.2/src
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /home/baw010/houqiqi/dependencies/matio-1.5.2/src/.libs
3,如果你有管理員權(quán)限的話,可以直接將libmatio.so.2的路徑給添加到LD_LIBRARY_PATH中,如果像我這樣寄人籬下,就在shell中export一下就行了 export?LD_LIBRARY_PATH=/your/path/to/libmatio.so.2
應(yīng)該就完成了。。。
這次安裝主要花的時(shí)間在于各種沒有管理員權(quán)限所額外花費(fèi)的時(shí)間。。。 Bug出現(xiàn)在一般情況下進(jìn)行了前2步,一般caffe就能用了,而這里不行,這里make沒什么問題,但是一運(yùn)行就出現(xiàn) libmatio.so.2不存在,然后ldd caffe.bin,
libmatio.so.2 => not found
然后我認(rèn)為是依賴庫(kù)的版本不一致導(dǎo)致的 file caffe.bin caffe.bin: ELF 64-bit LSB ?executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=e211136efba4fa8c156a4c5d7b0c9640f45d2de0, not stripped
file libmatio.so.2.0.2
libmatio.so.2.0.2: ELF 64-bit LSB ?shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0257ed156096e0f3a0014de932d7a4e484ac8559, not stripped
到這里就不知道該怎么辦了。。。非常想運(yùn)行l(wèi)dconfig什么的,然而這并沒有什么卵用,因?yàn)楦揪蜎]有權(quán)限。。。好多地方根本都看不了。。。 然后在google上搜了半天,大部分人都是講版本不一致什么什么的,直到 http://stackoverflow.com/questions/16345590/ldd-says-library-isnt-found-by-compile-completes-successfully
好了,貼一個(gè)LD_LIBRARY_PATH的說(shuō)明文吧 http://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=7084
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的兩個(gè)環(huán)境變量,二者的含義和作用分別如下:
LIBRARY_PATH環(huán)境變量用于在 程序編譯期間查找動(dòng)態(tài)鏈接庫(kù)時(shí)指定查找共享庫(kù)的路徑,例如,指定gcc編譯需要用到的動(dòng)態(tài)鏈接庫(kù)的目錄。
LD_LIBRARY_PATH環(huán)境變量用于在 程序加載運(yùn)行期間查找動(dòng)態(tài)鏈接庫(kù)時(shí)指定除了系統(tǒng)默認(rèn)路徑之外的其他路徑,注意,LD_LIBRARY_PATH中指定的路徑會(huì)在系統(tǒng)默認(rèn)路徑之前進(jìn)行查找。
區(qū)別與使用: 開發(fā)時(shí),設(shè)置LIBRARY_PATH,以便gcc能夠找到編譯時(shí)需要的動(dòng)態(tài)鏈接庫(kù)。 發(fā)布時(shí),設(shè)置LD_LIBRARY_PATH,以便程序加載運(yùn)行時(shí)能夠自動(dòng)找到需要的動(dòng)態(tài)鏈接庫(kù)。 GCC里的鏈接器的選項(xiàng)是 -rpath 和 -rpath-link,看了下 man ld,大致是這個(gè)意思:
GCC鏈接選項(xiàng)-L,-rpath-link和-rpath-L: “鏈接”的時(shí)候,去找的目錄,也就是所有的 -lFOO 選項(xiàng)里的庫(kù),都會(huì)先從 -L 指定的目錄去找,然后是默認(rèn)的地方。
-rpath_link (或者 -rpath-link):這個(gè)也是用于“鏈接”的時(shí)候的,例如你顯示指定的需要 FOO.so,但是 FOO.so 本身是需要 BAR.so 的,后者你并沒有指定,而是 FOO.so 引用到它,這個(gè)時(shí)候,會(huì)先從 -rpath-link 給的路徑里找。
-rpath: “運(yùn)行”的時(shí)候,去找的目錄。運(yùn)行的時(shí)候,要找 .so 文件,會(huì)從這個(gè)選項(xiàng)里指定的地方去找。對(duì)于交叉編譯,只有配合 --sysroot 選項(xiàng)才能起作用。
也就是說(shuō),-rpath指定的路徑會(huì)被記錄在生成的可執(zhí)行程序中,用于運(yùn)行時(shí)。
-rpath-link 則只用于鏈接時(shí)。
在 Linux 下,如果你寫好了自己的動(dòng)態(tài)鏈接庫(kù),需要在其它程序里調(diào)用,則需要讓這些程序能找到這些動(dòng)態(tài)鏈接庫(kù)。如果設(shè)置不對(duì),會(huì)出現(xiàn)類似如下的錯(cuò)誤:
test: error while loading shared libraries: libexampleso.so.0: cannot open shared object file: No such file or directory
這是因?yàn)闆]有把動(dòng)態(tài)鏈接庫(kù)的安裝路徑(例如說(shuō)是 /usr/local/lib )放到變量 LD_LIBRARY_PATH 里。
這時(shí),可以用命令 export 來(lái)臨時(shí)測(cè)試確認(rèn)是不是這個(gè)問題:
export LD_LIBRARY_PATH=/usr/local/lib
在終端里運(yùn)行上面這行命令,再運(yùn)行這個(gè)可執(zhí)行文件,如果運(yùn)行正常就說(shuō)明是這個(gè)問題。
接下來(lái)的問題是:以上做法,只是臨時(shí)設(shè)置變量 LD_LIBRARY_PATH ,下次開機(jī),一切設(shè)置將不復(fù)存在;如何把這個(gè)值持續(xù)寫到 LD_LIBRARY_PATH 里呢?
我們可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 語(yǔ)句,前者在每次登陸和每次打開 shell 都讀取一次,后者只在登陸時(shí)讀取一次。我的習(xí)慣是加到 ~/.bashrc 中,在該文件的未尾,可采用如下語(yǔ)句來(lái)使設(shè)置生效:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
修改完后,記得關(guān)掉當(dāng)前終端并重新打開一個(gè)新的終端,從而使上面的配置生效。
http://blog.csdn.net/liuxiabing150/article/details/52035621
DeepLab V2下載website:
https://bitbucket.org/aquariusjay/deeplab-public-ver2
在頁(yè)面左上角clone即可
然后再依次執(zhí)行下列命令:
cp Makefile.config.example Makefile.config
# Adjust Makefile.config (for example, if using Anaconda?Python, or if cuDNN is desired)
make all
make pycaffe
make test # NOT mandatory
make runtest # NOT mandatory
注:在make all的時(shí)候,會(huì)報(bào)錯(cuò):
bug1:matio.h no such file or directory
解決方法:執(zhí)行下列命令即可:
[html]?view plaincopy參考網(wǎng)址:https://bugs.launchpad.NET/ubuntu/+source/dynare/+bug/1537380
bug2:caffe/common.cu error: function atomicadd has already been defined
解決方法:https://github.com/vlfeat/matconvnet/issues/575
即找到/include/caffe目錄下的common.cuh文件,在atomicAdd 函數(shù)的上下方添加以下code:
For this error
ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory
I have executed this command to solve it
sudo ldconfig /usr/local/cuda/lib64
總結(jié)
以上是生活随笔為你收集整理的caffe matio问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caffe 测试时间报错 Aborted
- 下一篇: OpenCV学习笔记(一):图像显示