问题:lapack.so

在使用maptam的calibration camera的时候发现一个问题,运:

roslaunch mcptam camera_calibrator.launch camera_name:=camera1 device:=/dev/video0

提示出错:symbol lookup error: /usr/lib/liblapack.so.3: undefined symbol: sgetrs_N_parallel

网上的相关资料比较少,按照博主http://blog.sina.com.cn/s/blog_6594d5d30102wwx6.html 的讲解,应该时多个版本的库冲突的问题,本来想要按照指示删除 liblapack-dev, 先删除了 libatlas-base, 等到删除libpack-dev的时候,提醒将会有14个软件被卸载,不仅包括liblapack-dev, 还包括 了我的ros-kinect-desktop-full, 我之前没看清楚就删除了一次,这次不敢再删,换了个思路,查兰liblapack.so.3的链接文件;

cd /usr/lib
ls -lR |grep lapack

列出所有与lapack相关的软连接,具体结果如下:

drwxr-xr-x   2 root root     4096 5月  21 13:46 lapack
lrwxrwxrwx   1 root root       29 5月  21 13:48 liblapack.a -> /etc/alternatives/liblapack.a
lrwxrwxrwx   1 root root       30 5月  21 13:48 liblapack.so -> /etc/alternatives/liblapack.so
lrwxrwxrwx   1 root root       32 5月  22 10:36 liblapack.so.3 -> /etc/alternatives/liblapack.so.3
lrwxrwxrwx   1 root root       34 5月  22 11:16 liblapack.so.3gf -> /etc/alternatives/liblapack.so.3gf
./lapack:
-rw-r--r-- 1 root root 10922022 1月  17  2016 liblapack.a
lrwxrwxrwx 1 root root       18 1月  17  2016 liblapack.so -> liblapack.so.3.6.0
lrwxrwxrwx 1 root root       18 1月  17  2016 liblapack.so.3 -> liblapack.so.3.6.0
-rw-r--r-- 1 root root  6259328 1月  17  2016 liblapack.so.3.6.0
-rw-r--r-- 1 root root 6172176 4月  19  2016 liblapack.so.3
-rw-r--r-- 1 root root 213 1月  17  2016 lapack-netlib.pc
lrwxrwxrwx 1 root root  27 5月  21 13:48 lapack.pc -> /etc/alternatives/lapack.pc
-rw-r--r-- 1 root root  14832 4月  17  2016 lapack_lite.x86_64-linux-gnu.so

这里看到,执行roslaunch的时候调用的liblapack.so.3 库主要指向的就是/etc/alternatives 下的liblapack.so.3

update-alternatives 时Ubuntu下专门维护系统命令连接符的工具,可以很党鞭的设置系统默认使用那个命令,那个软件版本,主要会用到的是

update-alternatives --install 用于增加一组新的系统命令连接符

update-alternatives --display 用于查看一个命令链接组的所有信息,

update-alternatives --remove 用于删除一个alternative

update-alternatives --config  用于为现有的命令链接选择一个作为系统默认的

由上面的软连接查询结果也可以看到,在 /usr/lib 下有liblapack.so.3 , 并且在 /usr/lib/lapack 下 也有liblapack.so.3 , 所以要先了解系统默认调用的究竟是那个liblapack.so.3

shinan@shinan-HP-Pavilion-Gaming-Laptop-15-cx0xxx:/etc/alternatives$ sudo update-alternatives  --config liblapack.so.3
有 2 个候选项可用于替换 liblapack.so.3 (提供 /usr/lib/liblapack.so.3)。

  选择       路径                                 优先级  状态
------------------------------------------------------------
* 0            /usr/lib/openblas-base/liblapack.so.3   40        自动模式
  1            /usr/lib/lapack/liblapack.so.3          10        手动模式
  2            /usr/lib/openblas-base/liblapack.so.3   40        手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:1

查询结果如上, 总共由两种情况, * 哪行时默认的,openblas下的liblapack, 这里做一个切换,换成1, 因为默认的那个是我自己安装的openblas,我不确定是否正确, 换成1之后,再次运行roslaunch, 提示如下:

symbol lookup error: /usr/lib/libblas.so.3: undefined symbol: sgemv_thread_n

这次换成libblas.so.3 出错,也是用同样的方法, 查看:

sudo update-alternatives  --config libblas.so.3
有 2 个候选项可用于替换 libblas.so.3 (提供 /usr/lib/libblas.so.3)。

  选择       路径                               优先级  状态
------------------------------------------------------------
* 0            /usr/lib/openblas-base/libblas.so.3   40        自动模式
  1            /usr/lib/libblas/libblas.so.3         10        手动模式
  2            /usr/lib/openblas-base/libblas.so.3   40        手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:1

同样将其切换成1, 在次进行roslaunch,不会再报错。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值