【发布时间】:2011-07-13 03:55:06
【问题描述】:
获取由/etc/ld.so.conf 配置的路径列表以及其中包含的文件的最便携和最可靠的方法是什么?手动解析文件似乎不是一个好主意——格式可能会在未来的修订版中发生变化。
为了更好地理解这个问题,我将在下面为您提供具体细节。请注意,尽管有这些细节,但这是一个通用编程问题,适用于其他情况。
有一个程序,叫做LuaRocks。它是 Lua 编程语言的包管理器(有点像 Ruby gems 或 Python Eggs)。 LuaRocks 包被称为“rocks”。
作为一个方便的特性,LuaRocks 允许 Rock 作者为 Rock 指定外部依赖项列表,以 C 头文件和/或动态库文件的列表形式表示。 (Linux 上.so。)如果指定的文件不存在,则无法安装rock。
目前,在 Linux 上,LuaRocks 默认通过在两个 hardcoded 路径 /usr/lib 和 /usr/local/lib 中搜索文件来检查 .so 文件是否存在。
我认为这是不正确的行为,它是 Ubuntu 和其他 Debian 发行版中最近的 changes 的 broken。
更新:路径本身不是硬编码的,但用户可在配置文件中配置。尽管如此,IMO 并不是最好的解决方案。
相反(据我所知),LuaRocks 应该在/etc/ld.so.conf 指定的路径中查找文件以及其中包含的文件。
(现在请重新阅读上面的问题 ;-))
【问题讨论】:
标签: linux lua shared-libraries debian ldd