2011-11-06 96 views
1

在Ubuntu(Gnome)中,绝对没有办法改变GTK应用程序的鼠标滚轮滚动速率。它在GTK中被硬编码,并由动态依赖于窗口大小的“智能”算法确定。我修改了GTK源代码并重新编译:没有效果

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

我做

./configure 
make 
sudo make install 

由GTK网站的指示。

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

卜然后,我重新启动,它绝对没有影响。我的猜测是Ubuntu仍在使用它随附的原始GTK。你认为这里有什么错误?

+1

在Ubuntu上,您需要下载软件包源代码,修改该软件包并安装修改后的软件包。你*可以*使安装覆盖包版本,但你真的不应该。希望将安装放在容易清理的地方。 – derobert

+0

“包装来源”是什么意思?我是从GTK网站下载的,而不是软件包源代码?如果我不应该用make install覆盖它,我还应该做些什么? –

回答

5

好,被Ubuntu使用的GTK库/usr/lib下,但你并建立和安装一个都/usr/local/lib下(因为隐含--prefixconfigure/usr/local/usr)。

也许,通过设置您的LD_LIBRARY_PATH来查看/usr/local/lib之前/usr/lib应该有所帮助。

+0

我明白了。所以你说的是,而不是替换/ usr/lib中的那个,这将是正确的方法吗? –

+3

正确的方法是适当构建一个Ubuntu软件包,并向Gtk社区上游提交补丁。但是你可以通过设置你的LD_LIBRARY_PATH –

2

好消息是,Ubuntu的(由Debian的方式)有此特定的工具,例如:

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

将安装你需要建立libgtk-3.0一切,而:

apt-get source libgtk-3-0 

将为您提供所需的源代码。你可以修补它,你怎么样,然后利用建立.deb包含从Ubuntu的版本没有区别你的补丁在其他方面(从你的补丁我的意思)文件:

debuild 

快乐黑客!

+0

来测试你的东西,所以这会自动覆盖Ubuntu附带的原始GTK软件包? –

+1

这不是问题的答案。 OP想知道为什么make install不能取代打包的GTK。 – ptomato

+1

@ErenTantekin - 完全正确。如果你想恢复,只需'apt-get --reinstall install libgtk-3.0' – geocar

1

LD_LIBRARY_PATH操纵和/或放置必要的库文件在正确的文件夹会得到你修改的文件加载。

另请注意,使用ldd将使您能够验证您的修改后的库将被加载。这里的展示,如果我我当前机器上调用ls什么会被加载的样本:

[email protected]:~/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,你的变化将是积极的验证。

相关问题