|
Ubuntu's Latest Update Links to libgcc_s.so.1 to 64-bit Library on 32-bit System! How to Fix?
By Zombie Jesus Christ in Zombie Jesus Christ's Diary Thu Oct 06, 2011 at 06:18:11 AM EST Tags: Rusty is a Filthy Sodomite!, Natty Narwhale, Ubuntu, 11.04, ldconfig, Shared Libraries, 32-bit, 64-bit, Core Duo, NOT Core 2 Duo (all tags)
|
|
|
Even if you don't run Ubuntu, you do use ldconfig if you run Linux at all.
I'll be buying a new MacBook Pro as soon as I can. Not because I feel that I really need one, as the early 2006 MacBook1,1 model I have still works great. The problem is that it has a Core Duo CPU, not a Core 2 Duo, and so is just 32-bit.
For most 64-bit code I can use my Core Quad Xeon Fedora box. The problem I've got with my Early 2006 model is that 32-bit code is increasingly unsupported or, if it is supported, it is obviously inadequately tested, so lots of 32-bit stuff is shipped from the factory totally broken these days.
Apple's Mac OS X Lion is 64-bit only, for example. There is no damn good reason for that; there are still lots of 32-bit Intel Macs in common use, and my mother and my aunt are still using PowerPC Macs that they are very happy with.
If I were to suggest they buy new hardware so they can get security patches on 64-bit Intel hardware they would think I'd need to be 5150ed. Both their Macs still work great for the email and web browsing and occasional word processing which is either of them do.
Some recent update to the 32-bit Ubuntu 11.04 broke my /usr/lib/i386-linux-gnu/libgcc_s.so library. Please tell me how to fix it.
|
|
|
|
|
|
For some reason a 64-bit version called libgcc_s_64.so got put in there, even though the directory is for 32-bit code only.
Also ldconfig insists on linking libgcc_s.so.1 to the 64-bit library. The correct 32-bit library is present in the directory but does not get linked:
$ file /usr/lib/i386-linux-gnu/libgcc_s*
/usr/lib/i386-linux-gnu/libgcc_s_64.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
/usr/lib/i386-linux-gnu/libgcc_s.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
/usr/lib/i386-linux-gnu/libgcc_s.so.1: symbolic link to `libgcc_s_64.so'
If I either delete the symbolic link or point it at the 32-bit library, ldconfig will put it back the wrong way.
Unfortunately ldconfig runs everytime I install or upgrade a shared library with apt-get install or apt-get update. It then warns that the wrong library is linked, but does not fix the problem.
Clearly this is a bug in ldconfig, but it looks like it's hardwired to take care of all the libraries in usr/lib automatically. There is no entry for libgcc_s.so in /etc/ld.so.conf.d*.
Thanks for any advice you can give me. -- ZJC
|
|
|