Ето няколко номера в Линукс за по-начинаещи.
Наскоро ми се наложи да пробвам коя библиотека ми върши по-добра работа, когато идва в бинарен вид, т.е. не е компилирана при мен. Като цяло този начин за overload-ване на библиотеки е опсасен и не гарантира успех, но ако сте ентусиаст-експериментатор (като мен

) това би ви било полезно.
Линкера на Линукс позволява да му казвате коя точно библиотека да използвате, ако искате дадено приложение, ползващо споделени ресурси (shared libraries). Което разбира се означава, че буквално му казвате "По-умен съм от теб", което в 99,99% от случайте е
грешно.
Давам промер с compiz, който настройвах за драйвър i915:
kik@kik:~$ ldd `which compiz`
linux-gate.so.1 => (0xffffe000)
libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0xb7eca000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0xb7ec7000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb7ec2000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb7ebc000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7eb3000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb7eb0000)
libxslt.so.1 => /usr/lib/libxslt.so.1 (0xb7e7d000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7d64000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7d50000)
libstartup-notification-1.so.0 => /usr/lib/libstartup-notification-1.so.0 (0xb7d48000)
libSM.so.6 => /usr/lib/libSM.so.6 (0xb7d3f000)
libICE.so.6 => /usr/lib/libICE.so.6 (0xb7d27000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb7d25000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb7d0e000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb7d0b000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7d06000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb7c83000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb7c75000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb7b8d000)
libdl.so.2 => /lib/libdl.so.2 (0xb7b89000)
libm.so.6 => /lib/libm.so.6 (0xb7b62000)
libc.so.6 => /lib/libc.so.6 (0xb7a20000)
libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0xb7a1a000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7a03000)
/lib/ld-linux.so.2 (0xb7eea000)
Това са ресурсите, който compiz ще ползва от Slackware (12 в моя случей). Обаче тъй като (в моя случей) libGL.so го имам в 5 разновидности (s dri, без dri, от сайта на intel и едно от пакета на mesa) не съм сигурен, че compiz е закачен към това, което аз си мисля че е подходящо за случая. За да тествам другите .so-та правя следното:
LD_PRELOAD=/usr/lib/libGL.so.1.2.INTEL, с което ще го накарам да зареди
libGL.so.1.2.INTEL, а не default библиотеката. По принцип
ldconfig ще направи правилни симлинкове към библиотеките в /lib/, но пак повтарям -
ползвам го за тестове. и сега как бих презаписал библиотеката му, и да видя резултата:
kik@kik:~$ LD_PRELOAD=/usr/lib/libGL.so.1.2.CLOSED ldd `which compiz`
linux-gate.so.1 => (0xffffe000)
/usr/lib/libGL.so.1.2.CLOSED (0xb7f3f000)
libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0xb7f20000)
...
по подобен начин и стартирам самия compiz:
kik@kik:~$ LD_PRELOAD=/usr/lib/libGL.so.1.2.CLOSED which compiz &
Внимавайте как overwite-вате библиотеките, тъй като подобни експерименти ми костваха рестарт на компютъра, което не ми се беше случвало преди