windows - 如何在 Windows 上静态编译 SDL 游戏

标签 windows sdl sdl-image sdl-mixer

我一直在尝试为我的 Windows 游戏生成一个静态链接的“单一二进制”版本。我想链接 sdl、sdl_image 和 sdl_mixer,它们又会引入一些支持库。不幸的是,我还没有找到一种方法让它们全部使用 cygwin/mingw/gcc 进行编译和链接。据我所知,所有现有的公共(public)版本都只是共享库/dll。

请注意,我在这里不是在谈论许可。源将是开放的,因此 sdl 的 GPL/LGPLness 不相关。

最佳答案

编译项目时,只需对 makefile 进行几处更改。

  • 代替sdl-config --libs , 使用 sdl-config --static-libs
  • 围绕上述sdl-config --static-libs的使用与 -Wl,-Bstatic-Wl,-Bdynamic .这告诉 GCC 强制静态链接,但仅限于它们之间指定的库。

如果您的 makefile 当前看起来像:

SDLLIBS=`sdl-config --libs`

将其更改为:

SDLLIBS=-Wl,-Bstatic `sdl-config --static-libs` -Wl,-Bdynamic

这些实际上是您应该在类 Unix 系统上做的事情,但如果您使用更简单的 -static,它通常不会在类 Unix 系统上引起那么多错误。标记为 GCC,就像在 Windows 上一样。

关于windows - 如何在 Windows 上静态编译 SDL 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/115813/

相关文章:

c - 在文件夹中打开文件时运行 .exe 文件

c++ - 通过系统虚拟串口向蓝牙发送字节

c - 错误 : Couldn't open stream with SDL 1. 3

opengl - 使用单一字体纹理渲染文本(SDL + OpenGL)

c++ - SDL_event KEYDOWN行为问题

common-lisp - Lispbuilder-SDL : turn surface and preserve color key (transparency)

c++ - IMG_Load 问题(不支持的图像格式)

windows - 适用于 Windows 的 D-Bus 等效项

windows - 注册表中的参数扩展出现问题 | %~n1

c++ - 将 SDL_Image 与 libpng 相关联时出现问题