linux - 使用 OpenGL/Mesa3D 的可移植 Linux 编译可执行文件

标签 linux opengl executable mesa

我一直在阅读有关使用 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/

相关文章:

python - Intellisense 不适用于 python

javascript - 使用javascript调用外部程序(例如: a C program)

c++ - opengl 3d纹理问题

c# - 菜鸟 file.copy 问题在复制 .exe 文件时出现问题 C#

php - 使用/usr/bin/zip 在 PHP 中创建包含 UTF-8 编码名称的文件的 zip 文件

linux - 嵌入式 Linux 上的 Qt 应用程序自动运行 - "xcb"错误

opengl - OpenGL 中的着色器有多复杂?

c++ - 优化此 OpenGL 渲染算法

linux - 如何彻底剥离可执行文件

python - Pyinstaller无法构建wxpython应用程序,缺少错误wx._xml