"No such file" when running a 32-bit program on a 64-bit system

11,075

Solution 1

You're missing 32-bit support. Install libc6:i386, i.e. the 32-bit base library package, and all the other 32-bit libraries that Chrome needs (it's likely to be close to the dependencies of the Chromium package).

When you fail to execute a file that depends on a “loader”, the error you get may refer to the loader rather than the file you're executing.

  • The loader of a dynamically-linked native executable is the part of the system that's responsible for loading dynamic libraries. It's something like /lib/ld.so or /lib/ld-linux.so.2, and should be an executable file.
  • The loader of a script is the program mentioned on the shebang line, e.g. /bin/sh for a script that begins with #!/bin/sh.

The error message is rather misleading in not indicating that the loader is the problem. Unfortunately, fixing this would be hard because the kernel interface only has room for reporting a numeric error code, not for also indicating that the error in fact concerns a different file.

Once you install the 32-bit dynamic loader /lib/ld-linux.so.2, which is in the libc6:i386 package, you will at least get a non-misleading error message telling you of the other missing libraries.

Solution 2

The fastest way to get to Gilles' solution is to install ia32-libs-multiarch. While this does pull in a lot of packages, it saves you the time to figure out all the different dependencies.

Share:
11,075
Michael
Author by

Michael

Updated on September 18, 2022

Comments

  • Michael
    Michael over 1 year

    I downloaded a Chromium snapshot and unzipped it, like this:

    michael@ubuntu:/opt/chrome-linux$ ls
    chrome                  libffmpegsumo.so                nacl_irt_x86_32.nexe
    chrome.1                libppGoogleNaClPluginChrome.so  product_logo_48.png
    chrome_100_percent.pak  locales                         resources
    chrome.pak              nacl_helper                     resources.pak
    chrome_sandbox          nacl_helper_bootstrap           xdg-mime
    chrome-wrapper          nacl_irt_srpc_x86_32.nexe       xdg-settings
    

    But when I try to run chrome, it isn't there...

    michael@ubuntu:/opt/chrome-linux$ ./chrome
    bash: ./chrome: No such file or directory
    

    Does anyone know why it won't open? Running Xubuntu 12.10 AMD64.

    michael@ubuntu:/opt/chrome-linux$ ldd /opt/chrome-linux/* | grep -i "not found"
    ldd: /opt/chrome-linux/locales: not regular file
    ldd: /opt/chrome-linux/resources: not regular file
    
    • Eric Carvalho
      Eric Carvalho over 11 years
      Can you post the download link for that Chromium snapshot?
    • Michael
      Michael over 11 years
    • geethujoseph
      geethujoseph over 11 years
      It has execution permission? chmod +x chrome
    • Michael
      Michael over 11 years
      Yes, it is marked as executable.
    • Eric Carvalho
      Eric Carvalho over 11 years
      Maybe you're missing some libraries. Run ldd /opt/chrome-linux/* | grep -i "not found". Post the results.
    • Michael
      Michael over 11 years
      Added output to the question.
  • gertvdijk
    gertvdijk over 11 years
    Yes, basically, this is just a metapackage depending on the same (or similar) set of libraries that were shipped with the ia32-libs package before the Multiarch change. It's fair quick solution if you don't mind the big load of 32-bit packages to be installed. I'll integrate this in my answer of another question. :)
  • c_korn
    c_korn over 10 years
    The problem is that the ia32-libs package is removed since Ubuntu 13.10.