Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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
share|improve this question

migrated from askubuntu.com Jun 4 '13 at 18:08

This question came from our site for Ubuntu users and developers.

    
If you run sudo ldconfig and try again, does it help? If you run LD_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 of strace /build/toolchain/lin32/python-2.7.1/bin/python (first install strace if you don't have it). –  Gilles Jun 4 '13 at 18:09
    
@Gilles sudo ldconfig doesn't help, but setting the LD_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? –  gsingh2011 Jun 4 '13 at 18:16
    
Yes, 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. –  Gilles Jun 4 '13 at 18:18
    
@Gilles Just added it. –  gsingh2011 Jun 4 '13 at 18:23
    
I'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? –  Gilles Jun 4 '13 at 18:58

1 Answer 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
share|improve this answer
    
I already had libc6-i386 installed and update, and the symlink didn't help. –  gsingh2011 May 29 '13 at 22:31
    
What about LD_LIBRARY_PATH=/lib32/libutil.so.1:$LD_LIBRARY_PATH /build/toolchain/lin32/python-2.7.1/bin/python? –  Salem May 29 '13 at 22:48
    
Still no luck. This is a very strange error. –  gsingh2011 May 29 '13 at 23:49
    
Sorry, 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/… –  Gilles Jun 4 '13 at 18:10

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.