当前位置: 技术问答>linux和unix
关于"symbol lookup error"问题的诡异现象,高手帮忙解释解释
来源: 互联网 发布时间:2017-03-19
本文导语: 我写了一个demon程序,启动的时候需要设置一大堆环境变量:PATH,LD_LIBRARY_PATH,。。。~~~ 所以我写了一个启动脚本clidemon_omp_start.sh来设置环境变量并启动这个demon: #setup the env export PATH="${PATH}:/sbin:/bin:/usr/sbin:/...
我写了一个demon程序,启动的时候需要设置一大堆环境变量:PATH,LD_LIBRARY_PATH,。。。~~~
所以我写了一个启动脚本clidemon_omp_start.sh来设置环境变量并启动这个demon:
一开始的时候,我是在inittab里面执行这个启动脚本的:
demon能够正常运行,测试也都ok了!
后来,需要把demon纳入到另一个应用来管理,就把启动机制修改了。。。没想到一直起不来!
然后我就手工在bash里面调用这个启动脚本,也出现了个错误:
root@hapWibbSc2:/usr/app/bin# ./clidemon_omp_start.sh
[clidemon_omp_start.sh] cli_dispatcher detecting...
[clidemon_omp_start.sh] cli_dispatcher detected, kick off clidemon_omp.
/usr/app/bin/clidemon_omp: symbol lookup error: /usr/app/lte_cli/lib/libapp_fmwk.so: undefined symbol: _ZN7pcrecpp2RE6no_argE
一般 LD_LIBRARY_PATH 没设置会引起类似错误,但我这个设置对了的,libpcrecpp.so是在"/usr/local/lib"下面~ 并且当我再次改成用 inittab 来启动时,又是正常启动的! 如果是环境变量设置错误,应该也起不来才对!
Inittab方式启动这个demon为啥能够避开这个错误正常启动起来?
所以我写了一个启动脚本clidemon_omp_start.sh来设置环境变量并启动这个demon:
#setup the env
export PATH="${PATH}:/sbin:/bin:/usr/sbin:/usr/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib:/usr/sfw/lib:/usr/app/lib/"
export NMS_CONFIG="/usr/app/lte_cli/conf/conf.xml"
# kick off the demon
/usr/app/bin/clidemon_omp
一开始的时候,我是在inittab里面执行这个启动脚本的:
# Start the ISCLI omp demon
clio:3:once:/usr/app/bin/clidemon_omp_start.sh -r
demon能够正常运行,测试也都ok了!
后来,需要把demon纳入到另一个应用来管理,就把启动机制修改了。。。没想到一直起不来!
然后我就手工在bash里面调用这个启动脚本,也出现了个错误:
root@hapWibbSc2:/usr/app/bin# ./clidemon_omp_start.sh
[clidemon_omp_start.sh] cli_dispatcher detecting...
[clidemon_omp_start.sh] cli_dispatcher detected, kick off clidemon_omp.
/usr/app/bin/clidemon_omp: symbol lookup error: /usr/app/lte_cli/lib/libapp_fmwk.so: undefined symbol: _ZN7pcrecpp2RE6no_argE
一般 LD_LIBRARY_PATH 没设置会引起类似错误,但我这个设置对了的,libpcrecpp.so是在"/usr/local/lib"下面~ 并且当我再次改成用 inittab 来启动时,又是正常启动的! 如果是环境变量设置错误,应该也起不来才对!
Inittab方式启动这个demon为啥能够避开这个错误正常启动起来?
|
你直接把
/usr/local/lib
/usr/sfw/lib
/usr/app/lib/
这三个路径直接追加到/etc/ld.so.conf里 然后执行ldconfig命令
应该就不用设置LD_LIBRARY_PATH了
/usr/local/lib
/usr/sfw/lib
/usr/app/lib/
这三个路径直接追加到/etc/ld.so.conf里 然后执行ldconfig命令
应该就不用设置LD_LIBRARY_PATH了
|
你可以对比一下两种启动方式中 LD_LIBRARY_PATH 环境变量的区别
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。