【问题标题】:GCC refuses to link SDL2 .a filesGCC 拒绝链接 SDL2 .a 文件
【发布时间】:2022-09-29 15:10:24
【问题描述】:

所以,我运行了一个命令来编译这个实验。它看起来像这样。

\"F:\\Software-Development\\mingw32\\bin\\gcc.exe\" \"F:\\Software-Development\\Sources\\experiment\\source\\main.c\" -L \"F:\\Software-Development\\Sources\\experiment\\objects\\\" -Wall -o \"F:\\Software-Development\\Sources\\experiment\\~build\\EXP\" -lSDL2

main.c 只是来自Lazyfoo 的稍微修改的教程,因此它应该在纯 C 中工作,尽管我无法实际测试它。如果出于某种原因需要实际的源代码,我确实有一个我组装的测试包here。它可能不会工作,但同样不能测试它是否有错误。请不要告诉我代码中的潜在错误,除非它实际上与此错误相关。

\\objects\\ 是我的 .a 文件的存储位置。但是,由于某些莫名其妙的原因,每当我执行此命令时,它都会引发错误。不是cannot find -lSDL2: No such file or directory 错误,而是undefined reference to `SDL_X\' 错误。

这对我来说毫无意义,.a 文件就在那里,我不确定发生了什么。我唯一的线索是删除 -L 会引发 cannot find -lSDL2 错误,而修改 -L 参数中的内容实际上没有任何变化。我在其他地方寻求帮助,我环顾四周,似乎我已经离开了,但向 Stack Overflow 寻求可能真的微不足道的东西。

  • 总有一个可解释的原因,这个原因是总是您的环境配置不正确。
  • 凉爽的。它没有解释错误配置在哪里。你看看我的批处理文件怎么样,告诉我它在哪里? Because I sure don\'t see where I\'m going wrong with this.
  • 这回答了你的问题了吗? How do I use SDL2 in my programs correctly?
  • 特别是,在 Windows 上,您需要 -lmingw32 -lSDL2main -lSDL2 而不仅仅是 -lSDL2。如果它仍然不起作用,这意味着您一直在使用 x32 库和 x64 编译器,反之亦然。
  • 好吧,那根本没有解决问题。我添加了所有标志,并更改了 -Ldir 标志的位置,这给了我一个新错误。特别是“找不到 -lSDL2x:\”。将 -Ldir 标志的位置固定回它没有产生任何进展的位置,无论我使用哪一组 .a SDL2 文件(i686 或 x86_64),它仍然会抛出未定义的错误。在批处理中,命令现在看起来像这样 \"%compiler:~0,-1%\\gcc.exe\" %build:~0,-1%\\source\\main.c\" -ggdb -Wall -L \"%build:~1,-1%\\objects\\\" -o %build:~0,-1%\\~build\\%dat:~1,-1%\" -lmingw32 -lSDL2main -lSDL2\"。

标签: c compiler-errors linker-errors sdl-2


【解决方案1】:

所以我发现了原因。这绝对是荒谬的,但 mingw 的 GCC 编译似乎没有正确解释 -L。纠正此错误的唯一解决方案是删除-L dir 标志并将.a 文件放入mingX\lib 文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多