在/opt
中,我解压缩了一个GTK tarball,以少量方式修改了几个.c
文件,运行./configure
(没有任何选项)和make
(但不是安装),然后运行GTK的一个测试,以确认我的更改已实施。他们是。
我在libgtk
中重命名了linux发行版的/usr
来备份它。在它的位置,我创建了一个符号链接指向libgtk
/opt
中有我的mod。
我已经为2.0和3.0版本执行了此操作。
然而,例如Firefox,似乎仍在使用该发行版的默认库。
我错过了哪些步骤?
答案 0 :(得分:0)
我想我已经解决了。我已经备份了原来的libgtk 点 - 附加到其名称。例如,
libgtk-x11-2.0.so.0.2400.10
重命名为
libgtk-x11-2.0.so.0.2400.10.original
现在,我已经将点更改为短划线:.original
到-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
答案 1 :(得分:0)
我将添加关于运行ldconfig
的 ergosys 评论,您可能想要做的是将路径添加到自定义版本库目录(类似于{{1在/opt/gtk-2.xx-customized/lib
中使用正确的版本号}或/opt/gtk-3.xx-customized/lib
。通过以root身份运行/etc/ld.so.conf
,它应该更新链接器缓存。但是,定制版本的路径需要在系统之前指定。这样的变化是系统范围的,你不会搞乱你发行版创建的文件,这将取悦你的包管理器。原始版本和定制版本将位于不同的目录中,从而简化了维护工作。使用ldconfig
选项,如下所示:--prefix
指定构建软件的安装位置。请记住先前创建该目录,并为您的用户提供相应的写入权限。
请阅读./configure --prefix /opt/gtk-2.xx-customized
了解详情。
如果您出于某种原因只想使用原始库集合运行一次应用程序,只需使用man ldconfig
环境var指向要检查的所有其他目录之前的目录。 LD_LIBRARY_PATH
,这次是原始图书馆所在的那个。语法为ld
。不要忘记在64位系统上,库目录可以命名为lib64。