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