Linux 我修改了GTK源代码并重新编译:没有效果
在Ubuntu(Gnome)中,绝对无法更改GTK应用程序的鼠标滚轮滚动速率。它用GTK硬编码,并由“智能”算法确定,该算法动态地取决于窗口大小 所以我下载了源代码并找到了返回步长值的函数。我将其更改为先返回一个非常小的数字,然后返回0(以查看它是否有任何影响) 是的 按照GTK网站的指示 它编译没有问题(我有库)Linux 我修改了GTK源代码并重新编译:没有效果,linux,gcc,ubuntu,gtk,gnome,Linux,Gcc,Ubuntu,Gtk,Gnome,在Ubuntu(Gnome)中,绝对无法更改GTK应用程序的鼠标滚轮滚动速率。它用GTK硬编码,并由“智能”算法确定,该算法动态地取决于窗口大小 所以我下载了源代码并找到了返回步长值的函数。我将其更改为先返回一个非常小的数字,然后返回0(以查看它是否有任何影响) 是的 按照GTK网站的指示 它编译没有问题(我有库) 然后,我重新启动,它绝对没有影响。我猜Ubuntu仍然使用它附带的原始GTK。你认为这里有什么不对?好吧,Ubuntu使用的GTK库在/usr/lib下,但是你构建和安装的GTK库在
然后,我重新启动,它绝对没有影响。我猜Ubuntu仍然使用它附带的原始GTK。你认为这里有什么不对?好吧,Ubuntu使用的GTK库在
/usr/lib
下,但是你构建和安装的GTK库在/usr/local/lib
下(因为配置的隐式--prefix
是/usr/local
而不是/usr
)
也许,在/usr/lib
之前设置你的LD\u库路径
查看/usr/local/lib
会有所帮助。好吧,Ubuntu使用的GTK库在/usr/lib
下,但是你构建和安装的库在/usr/local/lib
下(因为配置的隐式--前缀是/usr/local
而不是/usr
)
也许,通过在/usr/lib
之前设置LD\u LIBRARY\u PATH
查看/usr/local/lib
,应该会有所帮助。好消息是Ubuntu(通过Debian)有专门的工具,例如:
sudo apt-get build-dep libgtk-3-0
将安装构建libgtk-3.0所需的所有内容,同时:
apt-get source libgtk-3-0
将为您提供所需的源代码。您可以根据自己的喜好对其进行修补,然后构建包含修补程序的.deb
文件,这些修补程序(我指的是修补程序)与Ubuntu版本无法区分,请使用:
debuild
快乐黑客!好消息是Ubuntu(通过Debian)有专门的工具,例如:
sudo apt-get build-dep libgtk-3-0
将安装构建libgtk-3.0所需的所有内容,同时:
apt-get source libgtk-3-0
将为您提供所需的源代码。您可以根据自己的喜好对其进行修补,然后构建包含修补程序的.deb
文件,这些修补程序(我指的是修补程序)与Ubuntu版本无法区分,请使用:
debuild
快乐的黑客!
操纵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
验证更改是否处于活动状态。
操纵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
验证您的更改是否处于活动状态。在Ubuntu上,您需要下载软件包源代码,修改它,然后安装修改后的软件包。您可以安装覆盖软件包版本,但您确实不应该这样做。希望能让安装变得容易清理。你说的“包源”是什么意思?我从GTK网站下载的不是软件包源吗?如果我不应该用make install覆盖它,我还应该做什么?在Ubuntu上,你需要下载软件包源,修改它,然后安装你修改过的软件包。你可以让make install覆盖软件包版本,但你真的不应该。希望我nstall把它放在一个容易清理的地方。你说的“包源”是什么意思?我从GTK网站下载的东西不是软件包源吗?如果我不应该用make install覆盖它,我还应该做什么?我明白了。所以你是说,这不是替换/usr/lib中的软件包,而是正确的方法?正确的方法是适当地构建一个Ubuntu软件包,并向GTK上游提交一个补丁社区。但是你可以通过设置你的LD_LIBRARY_path来测试你的东西。你是说这不是替换/usr/lib中的一个,而是正确的方法吗?正确的方法是适当地构建一个Ubuntu包并向Gtk社区提交一个补丁。但是你可以通过设置LD_L来测试你的东西Library_PATHSo这将自动覆盖Ubuntu附带的原始GTK软件包?这并不是问题的答案。OP想知道为什么make install
没有取代打包的GTK。@ErenTantekin-完全正确。如果你想恢复,只需apt get--重新安装libgtk-3.0
就可以了这将自动覆盖Ubuntu附带的原始GTK软件包?这并不是问题的答案。OP想知道为什么make install
没有取代打包的GTK。@ErenTantekin-完全正确。如果你想恢复,只需apt get--重新安装libgtk-3.0