caffe matio 安装

linux 同时被 2 个专栏收录
4 篇文章 0 订阅
9 篇文章 0 订阅

这篇文章主要集中在matio的安装上和配置上,还是花了一些时间的

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* 没有管理员权限的话
$ 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 贴出来我的

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,如果你有管理员权限的话,可以直接将libmatio.so.2的路径给添加到LD_LIBRARY_PATH中,如果像我这样寄人篱下,就在shell中export一下就行了
export LD_LIBRARY_PATH=/your/path/to/libmatio.so.2

应该就完成了。。。

这次安装主要花的时间在于各种没有管理员权限所额外花费的时间。。。
Bug出现在一般情况下进行了前2步,一般caffe就能用了,而这里不行,这里make没什么问题,但是一运行就出现 libmatio.so.2不存在,然后ldd caffe.bin,

libmatio.so.2 => not found

然后我认为是依赖库的版本不一致导致的
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

到这里就不知道该怎么办了。。。非常想运行ldconfig什么的,然而这并没有什么卵用,因为根本就没有权限。。。好多地方根本都看不了。。。
然后在google上搜了半天,大部分人都是讲版本不一致什么什么的,直到
http://stackoverflow.com/questions/16345590/ldd-says-library-isnt-found-by-compile-completes-successfully

好了,贴一个LD_LIBRARY_PATH的说明文吧
http://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=7084

LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:

LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。

LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。

区别与使用:
开发时,设置LIBRARY_PATH,以便gcc能够找到编译时需要的动态链接库。
发布时,设置LD_LIBRARY_PATH,以便程序加载运行时能够自动找到需要的动态链接库。
GCC里的链接器的选项是 -rpath 和 -rpath-link,看了下 man ld,大致是这个意思:


GCC链接选项-L,-rpath-link和-rpath-L: “链接”的时候,去找的目录,也就是所有的 -lFOO 选项里的库,都会先从 -L 指定的目录去找,然后是默认的地方。
-rpath_link (或者 -rpath-link):这个也是用于“链接”的时候的,例如你显示指定的需要 FOO.so,但是 FOO.so 本身是需要 BAR.so 的,后者你并没有指定,而是 FOO.so 引用到它,这个时候,会先从 -rpath-link 给的路径里找。
-rpath: “运行”的时候,去找的目录。运行的时候,要找 .so 文件,会从这个选项里指定的地方去找。对于交叉编译,只有配合 --sysroot 选项才能起作用。


也就是说,-rpath指定的路径会被记录在生成的可执行程序中,用于运行时。
-rpath-link 则只用于链接时。

在 Linux 下,如果你写好了自己的动态链接库,需要在其它程序里调用,则需要让这些程序能找到这些动态链接库。如果设置不对,会出现类似如下的错误:

test: error while loading shared libraries: libexampleso.so.0: cannot open shared object file: No such file or directory

这是因为没有把动态链接库的安装路径(例如说是 /usr/local/lib )放到变量 LD_LIBRARY_PATH 里。

这时,可以用命令 export 来临时测试确认是不是这个问题:

export LD_LIBRARY_PATH=/usr/local/lib

在终端里运行上面这行命令,再运行这个可执行文件,如果运行正常就说明是这个问题。

接下来的问题是:以上做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在;如何把这个值持续写到 LD_LIBRARY_PATH 里呢?

我们可以在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

修改完后,记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。



  • 1
    点赞
  • 10
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

houqiqi

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值