0

默认情况下,当操作系统上安装了该库的两个不同版本时,程序总是使用较新版本的库。如何配置我的系统,以便所有应用程序默认使用旧版本的库?也许我应该使用lddor 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 但我不确定如何实现。

  1. http://packages.ubuntu.com/precise/libpoppler19
  2. http://www.qtrac.eu/viewpdf.html
  3. http://packages.ubuntu.com/quantal/libpoppler28
4

1 回答 1

1

/usr/local根据默认前缀,将您从源代码构建的所有内容安装到configure.

更新:如果您打算进一步分发此软件包,则需要采用不同的方法。我会创建一个名为 say 的目录/usr/lib/future并在那里放置一个高级版本libpoppler.so。应用程序将链接到它,使用-rpath=/usr/lib/future和可能-rpath-link=/usr/lib/future

于 2012-10-29T18:02:08.733 回答