静态链接 SDL2 程序 (MinGW64)

引用 SDL 静态编译教程 的话:

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用 C语言 写成。本文主要介绍 SDL 库的静态编译方法。SDL 当前是第二版,开源协议改为 Zlib 授权模式,官方文档上描述虽然 SDL 可以编译为静态库,但不会主动介绍静态库的编译方法,也不推荐将 SDL 编译为静态库使用,不过在很多场合下,静态编译去除依赖可以让程序看起来更便捷。

但对于 GNU 家的 MinGW 来说,解决方法远没有那篇文章介绍的那么繁琐,官方也在其发布文件 /bin 中的 sdl-config 中明确指出了静态链接方法。


运行 ${prefix}/bin/sdl-config --static-libs --cflags --libs 可以获得

-L${exec_prefix}/lib -lmingw32 -lSDL2main -lSDL2 -mwindows  -Wl,--dynamicbase -Wl,--nxcompat -Wl,--high-entropy-va -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid

其中 ${exec_prefix} 替换成你存 SDL 库的地方。(正确安装的话不用加-L也可)
所以只需 g++ main.cpp 加上上面一堆就好了。当然 strip 后才能获得正常的静态链接可执行文件大小(2-3MB)。

posted @ 2022-08-16 23:10  wsm25  阅读(1307)  评论(0)    收藏  举报