今天碰到一个问题,在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:
之前,所以他就一直使用的旧的库文件!!!
也就是说,这个环境变量的使用是有优先级的,在前面的路径中找到了,就不会使用后面的,记住了,这个
阅读(1762) | 评论(0) | 转发(0) |