在64位系统上运行32位程序时“没有这样的文件”

我下载了Chromium快照并将其解压缩,如下所示:

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 

但是当我尝试运行chrome ,它不存在……

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

有谁知道为什么它不会打开? 运行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 

你缺少32位支持。 安装libc6:i386 ,即32位基础库包,以及Chrome所需的所有其他32位库(它可能接近Chromium包的依赖项)。

当您无法执行依赖于“加载器”的文件时,您获得的错误可能是指加载器而不是您正在执行的文件。

  • 动态链接的本机可执行文件的加载程序是负责加载动态库的系统的一部分。 它类似于/lib/ld.so/lib/ld-linux.so.2 ,应该是一个可执行文件。
  • 脚本的加载程序是shebang行中提到的程序,例如/bin/sh用于以#!/bin/sh开头的脚本。

错误消息相当误导,没有表明加载器是问题。 不幸的是,解决这个问题很困难,因为内核接口只有报告数字错误代码的空间,而不是表明错误实际上涉及不同的文件。

一旦你安装了libc6:i386软件包中的32位动态加载器/lib/ld-linux.so.2 ,你至少会得到一个非误导性的错误消息,告诉你其他缺少的库。

获得Gilles解决方案的最快方法是安装ia32-libs-multiarch 。 虽然这确实吸引了很多软件包,但它可以节省您找出所有不同依赖项的时间。