我一直在阅读有关使用OpenGL进行游戏跨平台开发的文章。我们正在考虑开发一款Linux用户也可以使用的游戏。然而,我遇到了一些我不太明白的事情。
如何创建可移植的linux可执行文件?具体来说,如何让OpenGL/Mesa3D的各种不同版本在一个(或多个)可执行文件中工作(我们不想分发源代码)。
Linux问题http://www.linuxquestions.org/questions/linux-software-2/hardware-acceleration-using-opengl-and-x11-876634/有人详细介绍了Mesa3D/OOpenGL是如何工作的,但我很难看到的是,我将如何在我编译的可执行文件中使用每个发行版的Mesa3D版本(甚至不确定这是否可能)。
据我所知,我需要在每个用户机器上动态地将应用程序的各个部分链接在一起,可能是通过使用安装程序?如果是这种情况,我们是否可以像OpenGL的dll在Windows上一样,在Mesa3D/OOpenGL的运行时部分编译程序和链接?
只需根据libGL.so
动态链接您的可执行文件即可。它的二进制接口在OpenGL的所有实现中都很常见。
据我所知,我需要在每个用户机器上动态地将应用程序的各个部分链接在一起,可能是通过使用安装程序?
你不做链接,安装程序也不做。动态链接在加载可执行文件时自动发生。动态链接是DLL在Windows和*nix上的*nix对应共享对象(.so
)中加载的方式。
在构建程序时,将选项-lGL
添加到链接器命令行,它将向可执行文件添加libGL.so
的动态链接条目。然后你可以重新分配。当程序在目标系统上启动时,动态链接器将定位libGL.so并加载它。