1

我一直在阅读使用 OpenGL 进行游戏的跨平台开发。我们正在考虑开发一款可供 Linux 用户使用的游戏。然而,我遇到了一些我不太了解的事情。

如何创建可移植的 linux 可执行文件?具体来说,如何让各种不同版本的 OpenGL / Mesa3D 在一个(或多个)可执行文件中工作(我们不想分发源代码)。

关于 Linux 问题http://www.linuxquestions.org/questions/linux-software-2/hardware-acceleration-using-opengl-and-x11-876634/有人详细介绍了 Mesa3D / OpenGL 的工作原理,但我我很难看到我将如何在我编译的可执行文件中使用每个发行版的 Mesa3D 版本(甚至不确定是否可能)。

据我所知,我需要在每台用户机器上将应用程序的各个部分动态链接在一起,可能是通过使用安装程序?如果是这种情况,我们可以在运行时为 Mesa3D / OpenGL 部分编译程序和链接,就像 OpenGL 的 dll 在 Windows 上可以做的那样吗?

4

1 回答 1

1

只需动态链接您的可执行文件libGL.so并完成它。它的二进制接口在 OpenGL 的所有实现中是通用的。

据我所知,我需要在每台用户机器上将应用程序的各个部分动态链接在一起,可能是通过使用安装程序?

不是您进行链接,安装程序也不是。加载可执行文件时,动态链接会自动发生。动态链接是如何在 Windows 中加载 DLL 以及在 *nix 上加载 *nix 对应的共享对象 ( .so)。

在构建程序时,将选项添加-lGL到链接器命令行,它将libGL.so向可执行文件添加动态链接条目。然后您可以重新分配。当程序在目标系统上启动时,动态链接器将定位 libGL.so 并加载它。

于 2012-07-17T23:39:17.997 回答