2011-11-06 68 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,你的變化將是積極的驗證。

相關問題