作为对第 34 届 Ludum Dare 的贡献,我使用 Unity 5 框架在 Windows 10 上开发了一款游戏。我将其导出到 32b 和 64b 版本的 Windows 以及 64b 版本的 OSX。它们都运行良好。
我还想为 Linux 用户导出它,因为我将它导出为 Linux 的 32b 和 64b 二进制文件。但是,在我的 Ubuntu 14.04 上它不起作用。具体来说,我将文件标记为可执行文件并运行它(从控制台)。它闪烁并崩溃,没有任何错误。
我想肯定有一些我必须安装的软件包,比如 mono。您能建议我应该安装什么才能运行这些游戏吗?
编辑1:
$ ldd game
linux-vdso.so.1 => (0x00007ffdd6f0b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f333660b000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f33363ed000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f33361e5000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f3335f7f000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x0000003bf5a00000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x0000003bfb200000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x0000003bfba00000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3335c03000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f33358fd000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f33356e6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3335321000)
/lib64/ld-linux-x86-64.so.2 (0x00007f333680f000)
libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f33350fa000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f3334ee8000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x0000003bf8e00000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f3334ce2000)
libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x0000003c08200000)
libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x0000003c0be00000)
libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x0000003c0b200000)
libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x0000003c04600000)
libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x0000003c0ca00000)
libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x0000003c0ba00000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x0000003bf5600000)
libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x0000003c03e00000)
libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x0000003c03600000)
libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f3334ad6000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f33348cc000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x0000003bf5200000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x0000003bf4e00000)
答案1
您拥有的是一个可以作为 Linux 可执行文件执行的可执行文件,但缺少在任何一个上运行的正确链接。
您提供的信息正是您开始解决问题所需要的。您需要转到 Ubuntu 软件包搜索,然后搜索软件包的内容。https://packages.ubuntu.com/
然后,您可能需要链接文件名不同的文件,以使可执行文件正常工作。您可能还需要下载和编译一些不在 Ubuntu 存储库中的第三方内容。
不幸的是,这是运行未使用目标发行版编译的可执行文件时常见的问题。谁知道在 Unity 内部对共享对象进行了什么样的 MacGyvering 来制作可执行文件。对于 osx 来说,情况很可能有所不同,因为它是一个具有一个结构的单一平台,而 Linux 是具有许多不同结构的多个发行版。相反,您拥有的是一个可以作为 Linux 可执行文件执行的可执行文件,但缺少在任何一个上运行的正确链接。
如果不共享您的文件,您就必须研究如何让该特定文件运行 - 并让它在不同版本的 Ubuntu 上运行。
我想说的是——我的经历和你完全相反。几年前,我在 Unity 上写了一些东西,当我在 Ubuntu 上运行它时,我以为会出现问题,但它运行起来没有任何问题。你遇到的问题很可能与游戏的某个组件有关。也许是一些第三方的东西?
抱歉,我没有提供太多帮助,而是回复了一个旧帖子。但我觉得我应该回复。有答案总比没有好。