我修改了GTK源代码并重新编译:没有效果

时间:2011-11-06 07:55:07

标签: linux gcc ubuntu gtk gnome

在Ubuntu(Gnome)中,绝对没有办法改变GTK应用程序的鼠标滚轮速率。它在GTK中是硬编码的,由“智能”算法决定,该算法动态地取决于窗口大小。

所以我下载了源代码并找到了返回步长值的函数。我把它更改为首先返回一个非常小的数字,然后是0(看它是否有任何影响)。

我做了

./configure
make
sudo make install

按照GTK网站的指示。

它编译没有任何问题(我有库)

然后,我重启,它绝对没有影响。我的猜测是Ubuntu仍然使用它附带的原始GTK。你觉得这里有什么问题?

3 个答案:

答案 0 :(得分:5)

嗯,Ubuntu使用的GTK库位于/usr/lib下,但您构建和安装的那些库位于/usr/local/lib下(因为隐含的--prefixconfigure是{ {1}}不是/usr/local)。

或许,通过将/usr设置为在LD_LIBRARY_PATH之前调查/usr/local/lib应该有所帮助。

答案 1 :(得分:2)

好消息是Ubuntu(通过Debian)具有特定的工具,例如:

sudo apt-get build-dep libgtk-3-0

将安装构建libgtk-3.0所需的一切,同时:

apt-get source libgtk-3-0

将为您提供所需的源代码。您可以按照自己喜欢的方式对其进行修补,然后构建包含您的修补程序的.deb文件(除非我的意思是补丁)与Ubuntu版本无法区分:

debuild

快乐的黑客攻击!

答案 2 :(得分:1)

LD_LIBRARY_PATH进行操作和/或将必要的库文件放在正确的文件夹中将会加载修改后的文件。

另请注意,使用ldd可以验证是否已加载修改后的库。这是一个示例,显示如果我在当前计算机上调用ls将加载的内容:

matt@stanley:~/src/pydlnadms$ ldd `which ls`
    linux-vdso.so.1 =>  (0x00007fff7cdde000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f245e288000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f245e080000)
    libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f245de77000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f245dae3000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f245d8df000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f245e4ca000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f245d6c0000)
    libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f245d4bb000)

安装修改后的GTK +共享库,正确操作环境,然后通过ldd验证您的更改是否有效。