Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我修改了GTK源代码并重新编译:没有效果_Linux_Gcc_Ubuntu_Gtk_Gnome - Fatal编程技术网

Linux 我修改了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(Gnome)中,绝对无法更改GTK应用程序的鼠标滚轮滚动速率。它用GTK硬编码,并由“智能”算法确定,该算法动态地取决于窗口大小

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

是的

按照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