Я модифицировал исходный код GTK и перекомпилировал: никакого эффекта

#linux #gcc #ubuntu #gtk #gnome

#linux #gcc #ubuntu #gtk #gnome

Вопрос:

В Ubuntu (Gnome) абсолютно невозможно изменить скорость прокрутки колеса мыши для приложений GTK. Он жестко запрограммирован в GTK и определяется «умным» алгоритмом, который динамически зависит от размера окна.

Итак, я загрузил исходный код и нашел функцию, которая возвращает значение шага. Я изменил его, чтобы сначала возвращать очень маленькое число, а затем 0 (чтобы посмотреть, влияет ли это вообще).

Я сделал

 ./configure
make
sudo make install
  

в соответствии с инструкциями веб-сайта GTK.

Он компилируется без проблем (у меня есть библиотеки)

Но затем я перезапускаю, и это абсолютно не влияет. Я предполагаю, что Ubuntu все еще использует оригинальный GTK, с которым он поставляется. Как вы думаете, что здесь не так?

Комментарии:

1. В Ubuntu вам необходимо загрузить исходный код пакета, изменить его и установить измененный пакет. Вы могли заставить make install перезаписать версию пакета, но вам действительно не следует. Надеюсь, что при установке поместите его куда-нибудь, где вам будет легко очистить.

2. Что вы подразумеваете под «исходным кодом пакета»? То, что я загрузил с веб-сайта GTK, не является исходным кодом пакета? И если я не должен перезаписывать его с помощью make install, что еще я должен делать?

Ответ №1:

Ну, библиотеки GTK, используемые Ubuntu, находятся под /usr/lib , но та, которую вы создали и установили, находится под /usr/local/lib (потому что неявное --prefix to configure /usr/local не /usr ).

Возможно, вам поможет настройка LD_LIBRARY_PATH на просмотр /usr/local/lib перед /usr/lib .

Комментарии:

1. Я вижу. Итак, вы говорите, что вместо замены в / usr / lib, это был бы правильный способ сделать это?

2. Правильный способ — создать пакет 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
  

Удачного взлома!

Комментарии:

1. Таким образом, это автоматически перезапишет исходные пакеты GTK, поставляемые с Ubuntu?

2. На самом деле это не ответ на вопрос. OP хотел знать, почему make install не вытеснял упакованный GTK.

3. @ErenTantekin — Это совершенно верно. Если вы хотите вернуться, просто apt-get --reinstall install libgtk-3.0

Ответ №3:

Манипулирование 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 , что ваши изменения будут активны.