Chinaunix首页 | 论坛 | 博客
  • 博客访问: 384046
  • 博文数量: 138
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1620
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-10 16:55
个人简介

当你比别人优秀一点点,别人会嫉妒你。当你比别人优秀很多,别人会羡慕你。

文章分类

全部博文(138)

文章存档

2016年(2)

2015年(2)

2014年(15)

2013年(119)

我的朋友

分类: LINUX

2013-11-29 14:52:45

今天碰到一个问题,在code中加log信息,但是运行程序怎么都打印不出来,最终定位到一个库上。

发现不管怎么修改这个库的源文件,始终无法改变输出,但是库文件的确是新编出来的。

实在没办法,用ldd看了看使用这个库的二进制文件,发现
bl7215.cn.alcatel-lucent.com <180:junchriz>pwd
/local/junchriz/autorun/bin

l7215.cn.alcatel-lucent.com <179:junchriz>ldd appbox
        linux-gate.so.1 =>  (0x40000000)
        libvngsim.so => /home/junchriz/autorun/lib/libvngsim.so (0x40002000)
        liblgprt.so => /home/junchriz/autorun/lib/liblgprt.so (0x40032000)
我实际的库文件放在了:
bl7215.cn.alcatel-lucent.com <182:junchriz>ls
liblgprt.so  liboamclnt.so  libvngsim.so  tao_lib
bl7215.cn.alcatel-lucent.com <183:junchriz>pwd
/local/junchriz/autorun/lib

为什么始终指向home的同名文件呢????

看了看,每次autorun都在配置环境的时候,有如此设置:

set ldpath="$PWD/lib:$PWD/lib/tao_lib:$PWD/lib/ace_tao"
setenv LD_LIBRARY_PATH $ldpath:${LD_LIBRARY_PATH}

我在home那设置了一次,又在local下设置了一次,其实分别设置了好几次,这样就使得我的LD_LIBRARY_PATH 环境变量如此长,可以看到,有好几次重复的,我们只看第一组


/dha_orbacus/shlib:/hss_openldap/openldap/lib:/hss_openldap/cyrus-sasl/lib:
/home/junchriz/autorun/lib:/home/junchriz/autorun/lib/tao_lib:/home/junchriz/autorun/lib/ace_tao:
/local/junchriz/autorun/lib:/local/junchriz/autorun/lib/tao_lib:/local/junchriz/autorun/lib/ace_tao:
/local/junchriz/autorun_LTE/lib:/local/junchriz/autorun_LTE/lib/tao_lib:/local/junchriz/autorun_LTE/lib/ace_tao:
/home/junchriz/autorun/lib:/home/junchriz/autorun/lib/tao_lib:/home/junchriz/autorun/lib/ace_tao:
/local/junchriz/314/autorun/lib:/local/junchriz/314/autorun/lib/tao_lib:/local/junchriz/314/autorun/lib/ace_tao:
/local/junchriz/case/74182/lib:/local/junchriz/case/74182/lib/tao_lib:/local/junchriz/case/74182/lib/ace_tao:
/home/sdmhss/tools/autorun/lib:/home/sdmhss/tools/autorun/lib/tao_lib:/home/sdmhss/tools/autorun/lib/ace_tao:
/home/junchriz/peterqi/autorun/lib:/home/junchriz/peterqi/autorun/lib/tao_lib:/home/junchriz/peterqi/autorun/lib/ace_tao:
/local/peterqi/autorun_v3/autorun/lib:/local/peterqi/autorun_v3/autorun/lib/tao_lib:/local/peterqi/autorun_v3/autorun/lib/ace_tao:
/local/junchriz/autorun_v3/autorun/lib:/local/junchriz/autorun_v3/autorun/lib/tao_lib:/local/junchriz/autorun_v3/autorun/lib/ace_tao


bin文件在找库文件的时候,会从这个LD_LIBRARY_PATH的路径里,挨个找,找到了,就不找了,而我的LD_LIBRARY_PATH里面

/home/junchriz/autorun/lib:/home/junchriz/autorun/lib/tao_lib:/home/junchriz/autorun/lib/ace_tao:
这个路径在
/local/junchriz/autorun/lib:/local/junchriz/autorun/lib/tao_lib:/local/junchriz/autorun/lib/ace_tao:
之前,所以他就一直使用的旧的库文件!!!


也就是说,这个环境变量的使用是有优先级的,在前面的路径中找到了,就不会使用后面的,记住了,这个

阅读(1669) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~