> Now, am I to undestand that, at least in my case, the error message
> Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
> was caused by libgail being a 32bit library and not compatible with amd64 architecture?
amd64 Linux kernels support ia32 processes running in 32bit compatibility mode. From the point-of-view of the 32bit process, it's pretty much the same as running under a 32bit (i386 architecture) kernel. (This is now called legacy mode on).
So yeah, when the dynamic linker in a 32bit process tries to load a shared library compiled for a different architecture, it returns an error, because it detected that the library is for a different architecture than the process. Just like if the file was a PowerPC or SPARC library.
The kernel knows whether to run a process in 32 or 64 bit mode by looking at the same ELF headers that libraries have, and that file(1) will show you.
> Now, am I to undestand that, at least in my case, the error message gtk-2.0/ modules/ libgail. so: wrong ELF class: ELFCLASS64
> Gtk-Message: Failed to load module "gail": /usr/lib/
> was caused by libgail being a 32bit library and not compatible with amd64 architecture?
amd64 Linux kernels support ia32 processes running in 32bit compatibility mode. From the point-of-view of the 32bit process, it's pretty much the same as running under a 32bit (i386 architecture) kernel. (This is now called legacy mode on).
http:// en.wikipedia. org/wiki/ Long_mode developer. amd.com/ pages/123200367 .aspx
http://
So yeah, when the dynamic linker in a 32bit process tries to load a shared library compiled for a different architecture, it returns an error, because it detected that the library is for a different architecture than the process. Just like if the file was a PowerPC or SPARC library.
The kernel knows whether to run a process in 32 or 64 bit mode by looking at the same ELF headers that libraries have, and that file(1) will show you.
llama$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, ...
tesla$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, ...
file works on share libs, too, of course.