链接器无法找到mingw64库?求助解决编译报错问题
问题排查:链接SDL2时出现
cannot find -lmingw64错误 执行make命令时触发以下链接错误:
g++ -I src/include -L src/lib -o main main.cpp -lmingw64 -lSDL2main -lSDL2 /usr/bin/ld: cannot find -lmingw64: No such file or directory collect2: error: ld returned 1 exit status make: *** [Makefile:2: all] Error 1
执行gcc --version、g++ --version、gdb --version均显示已安装mingw64,但链接时仍提示找不到-lmingw64库,相关代码如下:
Makefile原内容
all: g++ -I src/include -L src/lib -o main main.cpp -lmingw64 -lSDL2main -lSDL2
main.cpp原内容
#include <iostream> #include <SDL2/SDL.h> const int WIDTH = 800, HEIGHT = 600; int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_EVERYTHING); SDL_Window *window = SDL_CreateWindow("title",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,WIDTH,HEIGHT,SDL_WINDOW_ALLOW_HIGHDPI); if(NULL == window){ std::cout << "could not create window:"<< SDL_GetError() << std::endl; return 1; } SDL_Event windowevent; while (true) { if (SDL_PollEvent(&windowevent)) { if (SDL_QUIT == windowevent.type) { break; } } } SDL_DestroyWindow(window); SDL_Quit(); return EXIT_SUCCESS; }
解决方法
- 移除多余的链接参数
-lmingw64是不必要的链接参数,MinGW64编译环境会自动处理自身的依赖库,无需手动指定。修正后的Makefile如下:
all: g++ -I src/include -L src/lib -o main main.cpp -lSDL2main -lSDL2
- 验证库文件路径
确保src/include目录下存在完整的SDL2头文件,src/lib目录下存在SDL2的静态/动态库文件(如libSDL2.a、libSDL2main.a)。如果路径不符,需要调整-I(头文件搜索路径)和-L(库文件搜索路径)的参数值,指向正确的目录。
内容的提问来源于stack exchange,提问作者Dec_Ves
相关产品推荐
相关产品推荐

