Can't run 32 bit python on 64 bit Ubuntu: error while loading shared libraries: libutil.so.1
Using apt-file
:
$ apt-file search libutil.so.1
libc6: /lib/x86_64-linux-gnu/libutil.so.1
libc6-armel-cross: /usr/arm-linux-gnueabi/lib/libutil.so.1
libc6-armhf-cross: /usr/arm-linux-gnueabihf/lib/libutil.so.1
libc6-i386: /lib32/libutil.so.1
So installing libc6-i386
should solve your problem.
$ sudo apt-get install libc6-i386
If it still does not work you can try to create a symlink (backup the older file previously!):
$ sudo ln -s /lib32/libutil.so.1 /lib/i386-linux-gnu/libutil.so.1
Related videos on Youtube
DMM
Updated on September 18, 2022Comments
-
DMM over 1 year
I'm trying to run a 32 bit version of python on 64 bit Ubuntu 12.04. There are alternatives to running this specific binary, but I'm more interested in understanding what's causing the error than workarounds for it.
This is the full error I'm getting:
/build/toolchain/lin32/python-2.7.1/bin/python: error while loading shared libraries: libutil.so.1: cannot open shared object file: No such file or directory
I got a friend who is using the same system to run
ldd
on his machine to see the exact library path that was missing:$ ldd /build/toolchain/lin32/python-2.7.1/bin/python linux-gate.so.1 => (0xf77c5000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf778e000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7789000) libutil.so.1 => /lib/i386-linux-gnu/libutil.so.1 (0xf7784000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7758000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf75ae000) /lib/ld-linux.so.2 (0xf77c6000)
On my system, for the libutil.so.1 line I get
libutil.so.1 => not found
The interesting thing is that I do have the same shared library my friend has on my machine:
$ ls /lib/i386-linux-gnu/libutil.so.1 /lib/i386-linux-gnu/libutil.so.1
So if I have the library, why can't python find it?
It might be worth noting that the latest python works fine and even the 64 bit version of python 2.7.1 that's in the toolchain works fine.
Update: Here is the strace output:
$ strace /build/toolchain/lin32/python-2.7.1/bin/python execve("/build/toolchain/lin32/python-2.7.1/bin/python", ["/build/toolchain/lin32/python-2."...], [/* 46 vars */]) = 0 [ Process PID=6192 runs in 32 bit mode. ] brk(0) = 0x81b8000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff776d000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld-mfert.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=10518, ...}) = 0 mmap2(NULL, 10518, PROT_READ, MAP_PRIVATE, 3, 0) = 0xfffffffff776a000 close(3) = 0 open("/opt/McAfee/runtime/2.0/lib/libpthread.so.0", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200A\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=60992, ...}) = 0 mmap2(NULL, 332928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7718000 mmap2(0xf7726000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd) = 0xfffffffff7726000 mmap2(0xf7728000, 267392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7728000 close(3) = 0 open("/opt/McAfee/runtime/2.0/lib/libdl.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\v\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=9892, ...}) = 0 mmap2(NULL, 12400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7714000 mmap2(0xf7716000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xfffffffff7716000 close(3) = 0 open("/lib/tls/i686/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib/tls/i686/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib/tls/i686", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/lib/tls/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib/tls/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/lib/tls/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib/tls", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/lib/i686/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib/i686/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/lib/i686/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib/i686", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/lib/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/lib/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 open("/usr/lib/tls/i686/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib/tls/i686/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/i686/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib/tls/i686", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib/tls/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib/tls", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/usr/lib/i686/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib/i686/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/usr/lib/i686/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib/i686", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/usr/lib/sse2/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib/sse2", 0xff8a0924) = -1 ENOENT (No such file or directory) open("/usr/lib/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) stat64("/usr/lib", {st_mode=S_IFDIR|0755, st_size=36864, ...}) = 0 writev(2, [{"/build/toolchain/lin32/python-2."..., 46}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libutil.so.1", 12}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10/build/toolchain/lin32/python-2.7.1/bin/python: error while loading shared libraries: libutil.so.1: cannot open shared object file: No such file or directory ) = 158 exit_group(127) = ?
Output request by Gilles:
$ ls -l /lib*/ld-*.so* -rwxr-xr-x 1 root root 156872 Nov 1 2012 /lib64/ld-2.12.so lrwxrwxrwx 1 root root 10 Nov 19 2012 /lib64/ld-linux-x86-64.so.2 -> ld-2.12.so lrwxrwxrwx 1 root root 20 Nov 19 2012 /lib64/ld-lsb-x86-64.so -> ld-linux-x86-64.so.2 lrwxrwxrwx. 1 root root 20 Oct 25 2012 /lib64/ld-lsb-x86-64.so.3 -> ld-linux-x86-64.so.2 -rwxr-xr-x 1 root root 142472 Nov 1 2012 /lib/ld-2.12.so lrwxrwxrwx 1 root root 10 Nov 19 2012 /lib/ld-linux.so.2 -> ld-2.12.so $ cat /etc/ld.so.conf include /etc/ld.so.conf.d/*.conf $ for f in /etc/ld.so.conf.d/*; do echo "File: $f"; cat "$f"; done File: /etc/ld.so.conf.d/i386-linux-gnu_GL.conf File: /etc/ld.so.conf.d/i686-linux-gnu.conf # Multiarch support /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu File: /etc/ld.so.conf.d/libc.conf # libc default configuration /usr/local/lib File: /etc/ld.so.conf.d/nvidia_settings.conf /usr/lib/nvidia-settings File: /etc/ld.so.conf.d/x86_64-linux-gnu.conf # Multiarch support /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu File: /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf /usr/lib/nvidia-current /usr/lib32/nvidia-current File: /etc/ld.so.conf.d/zz_i386-biarch-compat.conf # Legacy biarch compatibility support /lib32 /usr/lib32
-
Gilles 'SO- stop being evil' almost 11 yearsIf you run
sudo ldconfig
and try again, does it help? If you runLD_PRELOAD=/lib/i386-linux-gnu/libutil.so.1 /build/toolchain/lin32/python-2.7.1/bin/python
, do you get the same error message? Please post the output ofstrace /build/toolchain/lin32/python-2.7.1/bin/python
(first installstrace
if you don't have it). -
DMM almost 11 years@Gilles
sudo ldconfig
doesn't help, but setting theLD_PRELOAD
did work. Is there a reason it wasn't on there by default? Is there a way I can put it on there without setting an environment variable? Also, would you still like the strace output? -
Gilles 'SO- stop being evil' almost 11 yearsYes, please post the strace output.
LD_PRELOAD
tells us that the file works but wasn't found (it could have been that the file exists but failed to load because it was corrupted in some bizarre way, though most corruptions would have led to a different message). I hope the strace output will show where the executable is looking for the library and compare where it's looking for other libraries. -
DMM almost 11 years@Gilles Just added it.
-
Gilles 'SO- stop being evil' almost 11 yearsI'll blame McAfee by default. It's probably doing something wrong. Do you still have the original loader around? What's the output of
ls -l /lib*/ld-*.so*
? What do/etc/ld.so.conf
and the files in/etc/ld.so.conf.d
contain? -
DMM almost 11 years@Gilles Added it.
-
DMM almost 11 years@Gilles If you saw the post in the last 6 minutes before this comment you would have seen the output for the wrong machine (the working machine). I just updated it with the output from the right machine, so just refresh the page.
-
Gilles 'SO- stop being evil' almost 11 yearsI can't see anything wrong in your setup, not even a trace of McAfee in the loader installation or in the library path. Yet McAfee shows up in the strace! Do you know anything about the McAfee installation? Can you bypass it?
-
-
DMM almost 11 yearsI already had libc6-i386 installed and update, and the symlink didn't help.
-
Salem almost 11 yearsWhat about
LD_LIBRARY_PATH=/lib32/libutil.so.1:$LD_LIBRARY_PATH /build/toolchain/lin32/python-2.7.1/bin/python
? -
DMM almost 11 yearsStill no luck. This is a very strange error.
-
Gilles 'SO- stop being evil' almost 11 yearsSorry, good try, but no, that can't be it. Without the
libc6-i386
package, the executable wouldn't have started at all, before even looking for its libraries — see askubuntu.com/questions/231479/…