我有一个旧版本的 glib,所有应用程序都是针对它编译和使用的。我需要安装一个需要较新版本的 glib 才能编译和运行的新应用程序。我将新版本的 glib 安装在一个单独的文件夹中(无需卸载旧版本),并且能够编译新应用程序(使用pkg-config
)。编译脚本使用链接器标志(如)-lglib-2.0
链接到库。
但是,我不确定将这两个库放在一起以便它们可以被需要它们的应用程序使用的最佳方法。设置LD_LIBRARY_PATH
为指向新库的位置会破坏旧应用程序。
我可以设置LD_LIBRARY_PATH
每次新应用程序运行时指向新的 glib 路径(sh
例如通过脚本),但我想知道是否有更好的方法。
答案1
尝试更改编译脚本以指定-rpath=
包含旧库的目录。rpath 将嵌入到实际编译的二进制文件中。
\$ORIGIN/../lib
(如果您希望它相对于二进制文件的位置,rpath 甚至可能包含某些扩展。)
然而,实际上,设置 LD_LIBRARY_PATH 的 shellscript 包装器对于二进制分布式软件(通常进入 /opt 的软件)确实很常见。