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