动态加载共享对象 with/without 版本号

Dynamically loading shared objects with/without version numbers

在 Linux 程序中,我需要加载一个名为 libfoobar 的共享对象。在我的系统上,有 libfoobar.solibfoobar.so.0libfoobar.so.0.0.0。在安装了不同发行版的另一个系统上,libfoobar.so 不存在,只有其他两个变体可用。

加载共享对象时我应该使用的正确文件名是什么?尝试在任何系统上加载 libfoobar.so.0 并在失败时退出是否足够,或者我应该尝试加载其他变体?

libfoobar.so.0libfoobar.so.0.0.0 应该是在某种程度上指向 libfoobar.so 的符号链接。如果您发现一个系统只存在这些符号链接但不存在 libfoobar.so,则该系统上的安装已损坏。

除此之外,是否要使用符号链接或原始文件名由您决定。