使用Cygwin编译SDL项目报cannot find -lmingw32错误如何解决
问题根因
报错核心是你在Cygwin原生编译环境中,错误添加了仅MinGW工具链才需要的libmingw32链接参数,Cygwin默认的GCC工具链不提供该库,因此链接器检索不到文件触发报错。
解决方案
- 第一步:直接移除编译链接参数中的
-lmingw32项,Cygwin环境编译SDL程序不需要该参数。 - 第二步:修正SDL链接库的大小写,Cygwin属于区分大小写的类Unix环境,你当前参数中的
-lsdl2main、-lsdl2需修改为-lSDL2main、-lSDL2,否则会额外触发库找不到的报错。 - 第三步:检查SDL库的适配版本,如果你是通过Cygwin自带的包管理器安装SDL2,无需手动指定长串的
-L库路径,直接用默认库路径即可;如果你是手动下载的SDL2库,需确认下载的是Cygwin适配版本,而非MinGW版本的SDL2库,两类工具链的库无法混用。 - 如果你确实需要用MinGW工具链编译程序,可以在Cygwin中安装
mingw64-x86_64-gcc、mingw64-x86_64-SDL2等交叉编译包,编译时使用x86_64-w64-mingw32-g++替代原生g++命令,此时才需要保留-lmingw32参数。
修改后参考编译命令
g++ -o dist/Debug/Cygwin-Windows/project_2_snake build/Debug/Cygwin-Windows/main.o -lSDL2main -lSDL2
如果是手动放置的SDL库,保留对应的-L路径参数即可。
内容的提问来源于stack exchange,提问作者Coolkid
相关产品推荐
相关产品推荐

