我一直在阅读有关使用 OpenGL 进行游戏跨平台开发的文章。我们正在考虑开发一款可供 Linux 用户使用的游戏。然而,我遇到了一些我不太了解的事情。
如何创建可移植的 linux 可执行文件?特别是如何让各种不同版本的 OpenGL/Mesa3D 在一个(或多个)可执行文件中工作(我们不想分发源代码)。
关于 Linux 的问题 http://www.linuxquestions.org/questions/linux-software-2/hardware-acceleration-using-opengl-and-x11-876634/有人详细介绍了 Mesa3D/OpenGL 是如何工作的,但我很难看到我将如何在我编译的可执行文件中使用每个发行版的 Mesa3D 版本(甚至不确定是否可能)。
据我所知,我需要在每个用户机器上将应用程序的各个部分动态链接在一起,可能是通过使用安装程序?如果是这种情况,我们能否像 OpenGL 的 dll 在 Windows 上做的那样,在运行时为 Mesa3D/OpenGL 部分编译程序和链接?
最佳答案
只需将您的可执行文件动态链接到 libGL.so
即可完成。它的二进制接口(interface)在 OpenGL 的所有实现中都是通用的。
From what I can tell I am required to dynamically link parts of the application together on each users machine, possibly through the use of an installer?
不是您进行链接,安装程序也不会。加载可执行文件时,动态链接会自动发生。动态链接是在 Windows 中加载 DLL 以及在 *nix 上加载 *nix 对应共享对象 (.so
) 的方式。
构建程序时,将选项 -lGL
添加到链接器命令行,它会将动态链接条目添加到 libGL.so
到可执行文件中。然后你可以重新分配。当程序在目标系统上启动时,动态链接器将找到 libGL.so 并加载它。
关于linux - 使用 OpenGL/Mesa3D 的可移植 Linux 编译可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530026/