我一直在试图产生一种静态链接“单一的二进制”我的游戏for Windows版本。 我想与SDL,sdl_image和sdl_mixer这又拉几的支持库链接。 不幸的是我还没有找到一个办法让他们都来编译和使用的cygwin / MinGW的/ gcc的链接。 至于我可以告诉所有现有的公共版本只是共享库/ DLL文件。
请注意,我说的不是牌在这里。 源将开放因而SDL的GPL / LGPLness是不相关的。
我一直在试图产生一种静态链接“单一的二进制”我的游戏for 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系统中做同样的事情,但它通常如果你使用更简单的不会对Unix的喜欢尽可能多的错误-static
标志,GCC,像它在Windows上。
通过这个SDL邮件列表后似乎SDL的开发工具舰船用SDL-config脚本,你可以用--static-库标志使用,以确定您需要使用什么连接标志。
环境:VMware虚拟机与Windows 7 x64和设备,我们开发的C + +建立7.4.2.569,complilador G + +(TDM-1)4.6.1
有一次,安装SDL2-2.0.3 API为开发配置C ++不是很清楚我做了什么为传统需要命令行。
第一个问题是,Windows 7似乎已经改变了方法和他们去他的球。 库存。 参考。 https://stackoverflow.com/users/464581/cheers-and-hth-alf
第一关后,SDL_platform.h是坏,它的下跌另一个,我不记得在那里我下载了,但接下来没有在指定的版本。
我们必须把SDL2.h LS在可执行文件的目录。
D:\prg_desa\zsdl2>g++ bar.cpp main.cpp -o pepe1 -ID:\SDL2-2.0.3\i686-w64-mingw32\include\SDL2 -LD:\SDL2-2.0.3\i686-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2 -mwindow
我终于编译和工作SDL2测试。
这是因为SDL库是在LGPL许可。
如果你想静态链接库的(你可以做,如果你重新编译。这需要一些黑客进入makefile文件虽然)你必须把你的游戏在某些兼容的开源许可为好。
在SDL-库来共享库,因为使用它们的程序都是封闭源代码。 二进制发行版的形式,大多数人的需要。
在我的系统(Ubuntu的),我必须使用以下标志:
-Wl,Bstatic -lSDL_image `sdl-config --libs` -lpng12 -lz -ltiff -ljpeg -lasound -laudio -lesd -Wl,-Bdynamic `directfb-config --libs` -lpulse-simple -lcaca -laa -ldl
链接SDL,SDL _
形象,他们的许多依赖静态的。 libdl你永远都不想静态的,因此使得使用SDL一个完全静态二进制_
形象是一个贫穷的想法。 脉冲,CACA,AA和DirectFB的大概可以做静态的。 我没有远远不够,数字出来呢。