Linux-linux中为什么不提倡用LD_LIBRARY_PATH,有什么坏处吗?

发布于 2016-11-10 02:09:09 字数 118 浏览 1233 评论 3

看到《程序员的自我修养》里面讲设定动态链接库的需找方式是讲到了LD_LIBRARY_PATH这种方法,但最后又说要尽量不用这种方法,不明白理由是什么。linux中为什么不提倡用LD_LIBRARY_PATH,有什么坏处吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

归属感 2017-07-08 14:04:59

想到一点,如果可执行程序的是setuid和setgid位被设置的话,运行的时候LD_LIBRARY_PATH变量会被忽略(处于安全原因),导致找不到LD_LIBRARY_PATH下的动态库。

瑾兮 2017-01-23 13:49:12

可以在环境变量LD_LIBRARY_PATH和LD_RUN_PATH中设置,也可以使用-Lpathname这个编译器选项来指定。出于安全性、性能和创建、运行独立性方面的考虑,使用环境变量的做法现在已经不提倡。一般还是在链接时使用-Lpathname和-Rpathname来指定。

参考链接:
When should I set LD_LIBRARY_PATH?
Why LD_LIBRARY_PATH is bad

灵芸 2017-01-01 14:53:14

这个问题也是争论已久的了。
传统派的 UNIXer是反对使用这个LD_LIBRARY_PATH变量的。
甚至反对在UNIX系统中使用任何全局变量。
因为这个不符合UNIX的简单,独立的设计哲学。
会事情混乱起来,尤其在单一程序多版本的情况下,可能出现一些库兼容的问题。
而且东西搅合在一起,让人觉得很凌乱,也给系统标准库造成污染。
让有洁癖的人受不了。
Linux下一般是通过ld.so.conf来配置非标准路径下共享库,
但这种方式和LD_LIBRARY_PATH本质上还是一样的
想解决这个问题,可以通过编译期间设置run-time path
如果一些非开源的软件,可以通过安装期间link的方式。
或者安装期间binary edit程序,修改path。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文