Решил кое-что пропатчить в gtk2. После ковыряния в исходниках успешно
собрал и установил его с --prefix=~/patches/usr. Теперь пытаюсь
собрать gtk-theme-switch для проверки (то, что я патчил, касается
тем). Его Makefile сводится к команде
cc -o switch2 switch.c `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
при этом
[gtk-theme-switch-2.0.0rc2]> pkg-config --cflags gtk+-2.0
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-
1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib
-2.0 -I/usr/lib/glib-2.0/include
[gtk-theme-switch-2.0.0rc2]> pkg-config --libs gtk+-2.0
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocai
ro-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
Как мне собрать switch, используя хидеры и библиотеку моего нового
gtk? Я пытался сделать так:
[gtk-theme-switch-2.0.0rc2]> cat domake.sh
#!/bin/bash
gcc -o switch switch.c -I/home/lfs/patches/usr/include/gtk-2.0 \
-I/home/lfs/patches/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 \
-I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 \
-I/usr/lib/glib-2.0/include -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 \
-lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 \
-ldl -lglib-2.0 $*
[gtk-theme-switch-2.0.0rc2]> ./domake.sh ~/patches/usr/lib/libgtk-x11-2.0.so
[gtk-theme-switch-2.0.0rc2]> ldd switch | grep gtk
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7ad3000)
т.е., он слинковался не с той библиотекой, хотя я прямо указал ему с
какой надо. Ну и вдобавок
[gtk-theme-switch-2.0.0rc2]> switch2 -p ~/patches/theme/
/home/lfs/theme//gtk-2.0/gtkrc:28: error: invalid identifier `light',
expected valid identifier
light как раз относится к патчу, который я написал. Может быть, он
кривой, но в данном случае, мне кажется, дело в неправильной линковке.
Re: Как указать альтернативу библиотеке из /usr/lib при сборке?
еще лучше gcc при линковке указать -Wl,rpath -Wl,/home/lfs/patches/usr/lib
Это вместо LD_LIBRARY_PATH; лучше потому что тот же libtool на него сильно смотрит, и все, что будешь собирать из исходников, будет завязано
на твою "домашнюю" gtk
Re: Как указать альтернативу библиотеке из /usr/lib при сборке?
Ага, так тоже сработало, только пришлось указать -Wl,-rpath -Wl,/home/lfs/patches/usr/lib, иначе ld ругался, что "rpath is not a directory". Спасибо за совет.