0

/opt中,我解压了一个 GTK 压缩包,以较小的方式修改了几个.c文件,运行./configure(没有任何选项)和make(但不进行安装),然后运行 ​​GTK 的一个测试以确认我的更改已实现。他们是。

我重命名了 linux 发行版的libgtkin/usr来备份它。在它的地方,我创建了一个符号链接,指向具有我的 mod的libgtkin 。/opt

我已经为 2.0 和 3.0 版本执行了此操作。

然而,应用程序,例如 Firefox,似乎仍在使用该发行版的默认库。

我错过了哪些步骤?

4

2 回答 2

0

我将在ergosys中添加关于运行的评论ldconfig,您可能想要做的是将路径添加到您的自定义版本库目录(类似于/opt/gtk-2.xx-customized/lib/opt/gtk-3.xx-customized/lib使用正确的版本号)在/etc/ld.so.conf. 通过ldconfig之后以 root 身份运行,它应该更新链接器缓存。但是,需要在系统路径之前指定自定义版本的路径。这样,更改是系统范围的,并且您不会弄乱您的发行版创建的文件,这将使您的包管理器满意。原始版本和定制版本将位于不同的目录中,便于维护。使用这样的--prefix选项:./configure --prefix /opt/gtk-2.xx-customized指定安装您构建的软件的位置。请记住之前创建该目录,并授予您的用户相应的写入权限。

请阅读man ldconfig以获取更多信息。

如果您出于某种原因只想偶尔运行一次使用原始库集的应用程序,只需使用LD_LIBRARY_PATHenvironment var 指向您要在所有其他已知的目录之前检查的目录ld,这一次是你原来的图书馆在哪里。语法是LD_LIBRARY_PATH="/usr/lib" name-of-your-application. 不要忘记在 64 位系统上,库目录可能被命名为 lib64。

于 2012-11-20T09:27:58.990 回答
0

我想我已经解决了。我通过在其名称上附加点来备份原始的 libgtk。例如,

libgtk-x11-2.0.so.0.2400.10

重命名为

libgtk-x11-2.0.so.0.2400.10.original

现在,我将点更改为破折号:.originalto -original... 并且 ldconfig 现在似乎忽略了备份副本,这很好。

以下对 ldconfig 是健壮的:

lrwxrwxrwx  libgtk-3.so -> libgtk-3.so.0
lrwxrwxrwx  libgtk-3.so.0 -> libgtk-3.so.0.400.2.alt
lrwxrwxrwx  libgtk-3.so.0.400.2 -> libgtk-3.so.0.400.2.alt
-rw-r--r--  libgtk-3.so.0.400.2-original
lrwxrwxrwx  libgtk-3.so.0.400.2.alt -> /opt/gtk/gtk+-3.4.2/gtk/.libs/libgtk-3.so.0.400.2

lrwxrwxrwx  libgtk-x11-2.0.so -> libgtk-x11-2.0.so.0
lrwxrwxrwx  libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.2400.10.alt
lrwxrwxrwx  libgtk-x11-2.0.so.0.2400.10 -> libgtk-x11-2.0.so.0.2400.10.alt
-rw-r--r--  libgtk-x11-2.0.so.0.2400.10-original
lrwxrwxrwx  libgtk-x11-2.0.so.0.2400.10.alt -> /opt/gtk/gtk+-2.24.10/gtk/.libs/libgtk-x11-2.0.so.0.2400.10
于 2012-11-20T06:07:51.037 回答