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

Sec*_*Sec 14 windows sdl sdl-image sdl-mixer

我一直试图为我的游戏生成一个静态链接的"单二进制"版本的Windows.我想链接sdl,sdl_image和sdl_mixer,这反过来又引入了一些支持库.不幸的是我还没有找到一种方法来使用cygwin/mingw/gcc来编译和链接.据我所知,所有现有的公共版本只是共享库/ dll.

请注意,我不是在谈论许可.源将是开放的,因此sdl的GPL/LGPLness无关紧要.

Ale*_*man 22

编译项目时,需要对makefile进行一些更改.

  • 而不是sdl-config --libs,使用sdl-config --static-libs
  • 围绕使用上面提到sdl-config --static-libs-Wl,-Bstatic-Wl,-Bdynamic.这告诉GCC强制静态链接,但仅限于它们之间指定的库.

如果你的makefile目前是这样的:

SDLLIBS=`sdl-config --libs`
Run Code Online (Sandbox Code Playgroud)

将其更改为:

SDLLIBS=-Wl,-Bstatic `sdl-config --static-libs` -Wl,-Bdynamic
Run Code Online (Sandbox Code Playgroud)

这些实际上与你在类Unix系统上应该做的事情是一样的,但是如果你使用更简单的-staticGCC标志,就像在Windows 上一样,它通常不会在Unix上产生那么多的错误.