我一直在阅读使用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上做的那样吗?
答案 0 :(得分:1)
只需将您的可执行文件与libGL.so
动态链接即可。其二进制接口在OpenGL的所有实现中都很常见。
据我所知,我需要在每台用户机器上动态链接部分应用程序,可能是通过使用安装程序?
不是您进行链接,也不是安装程序。加载可执行文件时会自动进行动态链接。动态链接是指如何在Windows中加载DLL以及* nix上的* nix对应共享对象(.so
)。
在构建程序时,将选项-lGL
添加到链接器命令行,它将向{01}添加动态链接条目到可执行文件。然后你可以重新分配。当程序在目标系统上启动时,动态链接器将找到libGL.so并加载它。