默认情况下,当操作系统上安装了该库的两个不同版本时,程序始终使用较新版本的库。如何配置我的系统以便所有应用程序默认使用旧版本的库?也许我应该使用ldd
或ldconfig
,但我不确定如何实现这一目标。
以下更多详情: 我正在使用Xubuntu Precise,我遇到了以下难题:
libpoppler v0.18.4
[1]并且所有Precise应用程序(Evince,Inkscape等)都是针对此版本的库构建的。 libpoppler >= v0.20
的ViewPDF [2]。 libpoppler v0.20.4
。 以下是我系统上目前可用的库:
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工作得很好。然而,最大的问题是最初针对0.18.4
构建的一些应用程序(xpdf,inkscape)已被破坏。
所以这是我的问题:
如何配置我的系统,以便所有应用程序默认使用旧版本的poppler库(libpoppler.so.19.0.0
);并且只有针对较新版本(libpoppler.so.28.0.0
)专门构建的应用才能使用最新版本?也许我应该使用ldd或ldconfig,但我不知道如何实现。
答案 0 :(得分:1)
根据默认前缀/usr/local
,将您构建的所有内容从源代码安装到configure
。
更新:如果您计划进一步分发此软件包,则需要采用不同的方法。我将创建一个名为/usr/lib/future
的目录,并在其中放置libpoppler.so
的高级版本。应用程序将使用-rpath=/usr/lib/future
和可能-rpath-link=/usr/lib/future
来链接它。