在linux中启动steam安装的游戏时出现错误的ELF类:ELFCLASS32

在linux中启动steam安装的游戏时出现错误的ELF类:ELFCLASS32

我已经在 linux ubuntu 18.04 中从 steam 商店安装了“反恐精英全球进攻”,但是当我启动它(从终端)时,它给出了许多错误,如下所示:

Steam/steamapps/common/Counter-Strike Global Offensive/bin/datacache_client.so

error=Steam/steamapps/common/Counter-Strike Global Offensive/bin/datacache_client.so: wrong ELF class: ELFCLASS32

从已经回答的问题中,我已经知道我应该安装 32 位共享对象,但大多数库(如果不是全部)在存储库中不可用,而是由游戏开发人员创建的。

我想知道我能做些什么来抑制这些错误?
而且它不能直接从steam应用程序启动。
感谢您的帮助。
谢谢。

答案1

您无法“抑制这些错误”:可执行二进制文件及其所需的所有库必须全部是 64 位或全部 32 位。为了运行应用程序,您必须提供它所需的所有库的正确版本。

如果您的系统是 64 位并且之前没有安装任何 32 位库,则可能需要在包管理系统中启用 32 位体系结构支持:

sudo dpkg --add-architecture i386

您可能还需要检查/etc/apt/sources.list任何/etc/apt/sources.list.d/*.list文件中的存储库定义。如果架构规范中有任何未注释的行,即如下所示:

deb [arch=amd64] https://...

那么您可能希望删除将软件包存储库访问限制为仅 64 位版本的“[arch=amd64]”部分。

之后,运行sudo apt update或等效命令刷新可用包的列表,然后您应该可以选择任何库包的 32 位版本,其名称与相应的 64 位包相同,但:i386后面带有后缀包裹名字。

答案2

最后(暂时)删除驻留在游戏根目录 bin/ 下的所有 32 位共享对象解决了问题。我认为这是游戏本身的错误。
另外,我无法从存储库安装大部分库,因为它们是该游戏的专有共享对象。

相关内容