不久前我发布了一个关于在 Debian Wheezy 64 位中运行 32 位应用程序
谢谢@约瑟夫R我能够运行它而没有出现令人讨厌的could not find libGL.so.1
错误。
然而现在,应用程序在执行过程中崩溃了。崩溃后,终端中出现此消息:
Aug 2 10:04:16 acs-laptop kernel: [ 213.472753] aquaria[7006]: segfault at 8 ip 00000000f41238fb sp 00000000ffceabc0 error 4 in libGL.so.1.2[f4107000+54000]
重新安装驱动程序并没有解决问题,我不确定是什么原因造成的。 32位版本libGL.so
在64位系统上运行有bug吗?
答案1
您libgl1-mesa-glx
安装的是 OpenGL API 的免费实现。
通常专有驱动程序会提供自己的二进制实现(优化、硬件加速)。
您已经重新安装了驱动程序(如何?哪个?),但可能会安装 amd64 libGL 版本,而不是游戏寻找 i386(这样什么也不会发生)
您可以在游戏运行时验证使用的是哪个版本,例如:
grep libGL /proc/$(pidof aquaria)/maps
或者再次使用ldd
上一篇文章中建议的命令。
无论如何,问题可能是游戏正在使用 libGL 中未实现的某些功能,或者以意想不到的方式使用某个功能,了解问题的唯一方法是调试。
您可能想要安装该libgl1-mesa-glx-dbg:i386
软件包,并且当段错误发生时,您可能会得到一些函数名称,而不是数字。
我从来没有gdb
在 64 位机器上使用过来调试 32 位二进制文件(我会检查一下),但是 abacktrace
对于开始来说会很有用。
那么如果这是你正在玩的水族馆..它是开源的(不是游戏数据),这意味着很有可能让它工作,甚至构建游戏来运行 64 位本机。
编辑
- 这是原始存储库
- 这是一个叉
- 这里论坛提供了一些有用的信息,读关于安装新二进制文件后的 cp 脚本
- 和这里为 ubuntu amd64 和 i386 预构建的软件包,幸运的是您可以尝试按原样安装 deb,或者至少
aquaria
从 amd64 中提取可执行文件.deb
如果你想尝试一下这个......备份首先是你的工作副本