gpt4 book ai didi

c - 在 MinGW 中手动链接标准库

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:20 27 4
gpt4 key购买 nike

我在让 MinGW 识别 CSFML 库时遇到了一些麻烦。我不得不使用链接器手动链接每个库。现在我没有通过简单的 gcc 调用自动链接的标准库。

bbroo@DESKTOP-1F1J3SM ~/Shaders
$ ld shaders.o libcsfml-system.a libcsfml-window.a libcsfml-graphics.a csfml-system-2.dll csfml-window-2.dll csfml-graphics-2.dll
shaders.o:shaders.c:(.text+0x10): undefined reference to `__main'
shaders.o:shaders.c:(.text+0x4bc): undefined reference to `sleep'

MinGW 中标准库的名称是什么,如何在 LD 中链接到它?

我知道这不能回答问题,但是用这个编译是可行的:

gcc shaders.c libcsfml-system.a libcsfml-window.a libcsfml-graphics.a csfml-system-2.dll csfml-window-2.dll csfml-graphics-2.dll

最佳答案

使用“ld”并不明显。由于 gcc 成功编译了您的项目,您可以通过以下步骤直接使用“ld”重现链接阶段。

  1. 使用添加了 -v 选项的“gcc”进行编译。这将产生大量文本,您可能希望使用“2>out”将其重定向到文件
  2. 找到以“COLLECT_GCC_OPTIONS=”开头的最后一行
  3. 在这一行之后会有一个 gcc 选项的列表,它调节 'ld' 的行为。从这一行中提取以下内容:指向主库文件夹和 gcc 特定库文件夹的两个 -L 选项;之后是一系列使用过的目标模块和库。将这些复制到您的“ld”命令行。该列表相当大。 对象和库的顺序很重要!

这是成功链接简单测试程序的示例命令行:

ld -Lc:\MinGW\lib\gcc\mingw32\5.3.0 -Lc:\MinGW\lib -o test.exe crt2.o crtbegin.o test.o -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt crtend.o

您可能需要检查路径,将 *.o 文件复制到您的文件夹或添加路径并添加您的库。

关于c - 在 MinGW 中手动链接标准库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44361841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com