我一直在试图为Windows生成一个静态链接的“单一二进制”版本的游戏.我想链接到sdl,sdl_image和sdl_mixer,而sdl_image和sdl_mixer依次拉入几个支持库.不幸的是,我还没有找到一个方法让他们全部编译和链接使用cygwin / mingw / gcc.据我所知,现有的所有公共版本只能是共享库/ 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的系统相同,但如果在Windows上使用简单的-static标志,通常不会对Unix喜欢造成任何错误.