I have just discovered that my fglrx installation under Fedora 8 was using Mesa's version of libGL.so.1.2 instead of ATI's. The underlying reason for this seems to be that all my OpenGL applications are looking for a library called libGL.so.1, whereas ATI's library advertises itself as libGL.so.1
.2. Basically, ATI seems to have built its library without setting its soname to "libGL.so.1".
Linking a simple dynamic executable against ATI's libGL gives the following:
Code:
$ ldd -r ./a.out
linux-gate.so.1 => (0xb7f35000)
libGL.so.1.2 => /usr/lib/fglrx/libGL.so.1.2 (0xb7e96000)
libc.so.6 => /lib/libc.so.6 (0x443d3000)
libpthread.so.0 => /lib/libpthread.so.0 (0x44560000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x47d1f000)
/lib/ld-linux.so.2 (0x443b4000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x47c03000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x44599000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0x47bff000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x47d01000)
libdl.so.2 => /lib/libdl.so.2 (0x44559000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x445a2000)
whereas something like glxinfo expects to find the following:
Code:
$ ldd `which glxinfo`
linux-gate.so.1 => (0xb7f7b000)
libGL.so.1 => /usr/lib/libGL.so.1 (0xb7edc000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb7e6d000)
libc.so.6 => /lib/libc.so.6 (0x443d3000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x47c03000)
libpthread.so.0 => /lib/libpthread.so.0 (0x44560000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x47d1f000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x44fe8000)
libm.so.6 => /lib/libm.so.6 (0x4452e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x44f62000)
/lib/ld-linux.so.2 (0x443b4000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0x47bff000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x47d01000)
libdl.so.2 => /lib/libdl.so.2 (0x44559000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x44599000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x445a2000)
I have (hopefully!) sorted this mess out by moving Mesa's libGL.so.1.2 library out of harm's way, and then creating a symbolic link in /usr/lib:
Code:
$ ls -als /usr/lib/libGL.so.1
0 lrwxrwxrwx 1 root root 18 2008-01-12 23:58 /usr/lib/libGL.so.1 -> fglrx/libGL.so.1.2
I installed fglrx from binary packages, and so am slightly surprised to be needing to get my hands dirty like this. Does anyone have any thoughts, please?
Cheers,
Chris