我是靠谱客的博主 迅速钢笔,最近开发中收集的这篇文章主要介绍LD_LIBRARY_PATH的错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

         这几天在部署系统时又碰到了can not find so的错误了,本来以为这个问题是小意思一个,手到擒来,结果还是花了我半天的时间才搞定。

         这个问题是这样的:我在一台apache上部署了一个wsgi应用,python脚本里用到了一个第三方的驱动程序,这个python的驱动包不是我安装的,是其他人员安装在非标准目录下的。我在shell命令中使用这个第三方驱动包没有问题,但是在apache中调用python脚本时却找不到驱动的so文件。

         一般来说看这篇文章Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf基本上就能搞定所有的LD_LIBRARY_PATH的问题。具体到这个问题,我们也能分析出来,首先是本地环境变量传递给Apache,然后Apache传递给wsgi,wsgi再传递给python包。整个链条就串起来了,就能找到动态库了。环境变量传递给Apache可以使用export来做。Apache传递给wsgi,本来以为可以使用SetEnv这个命令来处理,结果仔细看文档,发现不行,这个Env只是apache用的。而在python脚本中也没有可以用来修改环境变量的命令,os.environ这个变量不能用来设置环境变量。事情到了这里进行不下去了。

         还在天无绝人之路,有仔细阅读了一下这几篇文章,发现这一行:For security reasons, LD_LIBRARY_PATH is ignored at runtime forexecutables that have their setuid or setgid bit set. This severely limits theusefulness of LD_LIBRARY_PATH.原来在setuid的情况下,LD_LIBRARY_PATH不起作用。我的Apache是启在80端口上的,这样这个问题就无解了。最后我只有采用将apache启在8080端口上才解决了这个这个问题。当然如果有root权限,这个问题是很好解决的,在系统目录下建一个软连接就行了。


最后

以上就是迅速钢笔为你收集整理的LD_LIBRARY_PATH的错误的全部内容,希望文章能够帮你解决LD_LIBRARY_PATH的错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部