默认情况下,当操作系统上安装了该库的两个不同版本时,程序总是使用较新版本的库。如何配置我的系统,以便所有应用程序默认使用旧版本的库?也许我应该使用ldd
or ldconfig
,但我不确定如何实现。
下面的一些更多细节:我正在使用 Xubuntu Precise,我遇到了以下难题:
- Xubuntu Precise 发布
libpoppler v0.18.4
[1] 并且所有 Precise 应用程序(Evince、Inkscape 等)都是针对此版本的库构建的。 - 我想构建和安装 ViewPDF [2],它需要
libpoppler >= v0.20
. - 由于上述原因,我
libpoppler v0.20.4
从 Ubuntu Quantal [3] 向后移植。
以下是我系统上当前可用的库:
liv@liv-laptop:~$ locate libpoppler. | grep -i /usr/lib/
/usr/lib/x86_64-linux-gnu/libpoppler.a
/usr/lib/x86_64-linux-gnu/libpoppler.so
/usr/lib/x86_64-linux-gnu/libpoppler.so.19
/usr/lib/x86_64-linux-gnu/libpoppler.so.19.0.0
/usr/lib/x86_64-linux-gnu/libpoppler.so.28
/usr/lib/x86_64-linux-gnu/libpoppler.so.28.0.0
liv@liv-laptop:~$ ls -lh /usr/lib/x86_64-linux-gnu/libpoppler.*
-rw-r--r-- 1 root root 3.8M Sep 24 17:15 /usr/lib/x86_64-linux-gnu/libpoppler.a
lrwxrwxrwx 1 root root 20 Sep 24 17:14 /usr/lib/x86_64-linux-gnu/libpoppler.so -> libpoppler.so.28.0.0
lrwxrwxrwx 1 root root 20 Sep 4 12:35 /usr/lib/x86_64-linux-gnu/libpoppler.so.19 -> libpoppler.so.19.0.0
-rw-r--r-- 1 root root 2.0M Mar 1 2012 /usr/lib/x86_64-linux-gnu/libpoppler.so.19.0.0
lrwxrwxrwx 1 root root 20 Sep 24 17:14 /usr/lib/x86_64-linux-gnu/libpoppler.so.28 -> libpoppler.so.28.0.0
-rw-r--r-- 1 root root 2.4M Sep 24 17:15 /usr/lib/x86_64-linux-gnu/libpoppler.so.28.0.0
现在构建和运行 ViewPDF 工作正常。然而,最大的问题是最初构建的一些应用程序(xpdf、inkscape)0.18.4
被破坏了。
所以这是我的问题:如何配置我的系统,以便所有应用程序默认使用旧版本的 poppler 库(libpoppler.so.19.0.0
);并且只有专门针对较新版本 ( libpoppler.so.28.0.0
) 构建的应用程序才能使用最新版本?也许我应该使用 ldd 或 ldconfig 但我不确定如何实现。