How to run old linux code (32bit) on current ubuntu system?

Peng Yu pengyu.ut at gmail.com
Sat Jul 27 21:00:12 UTC 2013


>> ~$ ./y
>> ./y: relocation error: ./y: symbol errno, version GLIBC_2.0 not
>> defined in file libc.so.6 with link time reference
>
>
>
> $ sudo apt-get install libc6-i386
>
> I've found that for the 32 apps I run, that's all I need.  If the
> application still does not run, then use the utility "ldd" on the binary.
> It will list the libraries it needs (you must have the above one installed
> first) and you can install those by hand.


~$ ./y
./y: relocation error: ./y: symbol errno, version GLIBC_2.0 not
defined in file libc.so.6 with link time reference
~$ ldd y
	linux-gate.so.1 =>  (0xf77d0000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf75fb000)
	/lib/ld-linux.so.2 (0xf77d1000)

I don't complete understand the above output, where is it documented.
(For example, what does '=>' mean? what is the number in the ()?)

I guess it should be the shared library this executable "y" depends. I
find the 2nd and 3rd library files, but not the first one.

~$ ll /lib/ld-linux.so.2
lrwxrwxrwx 1 root root 25 Apr 18 07:14 /lib/ld-linux.so.2 ->
i386-linux-gnu/ld-2.17.so
~$ ll /lib/i386-linux-gnu/libc.so.6
lrwxrwxrwx 1 root root 12 Apr 18 07:14 /lib/i386-linux-gnu/libc.so.6
-> libc-2.17.so

What does the error message "symbol errno, version GLIBC_2.0 not
defined in file libc.so.6 with link time reference" mean?

> If there's a better way to do it using multiarch, then I'd encourage doing
> that instead.



-- 
Regards,
Peng




More information about the ubuntu-users mailing list