我一直试图为我的游戏生成一个静态链接的"单二进制"版本的Windows.我想链接sdl,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系统上应该做的事情是一样的,但是如果你使用更简单的-static
GCC标志,就像在Windows 上一样,它通常不会在Unix上产生那么多的错误.