gpt4 book ai didi

Clang、Microsoft 链接器和标准库

转载 作者:太空狗 更新时间:2023-10-29 15:58:33 25 4
gpt4 key购买 nike

我已经使用 Microsoft C++ 成功构建了 Clang,我正试图让它编译一个 hello world 测试用例;就生成目标文件而言,与标准库链接是剩下的绊脚石:

hello-202520.o : error LNK2019: unresolved external symbol _printf referenced in function _main
LINK : error LNK2001: unresolved external symbol _mainCRTStartup

前几年有评论说 Clang 根本还没有做 Windows 链接,但我觉得那些已经过时了,事实上它现在似乎能够生成 Windows 格式的目标文件:

clang -c hello.c
ren hello.o hello.obj
link hello.obj

... 不会呕吐,所以文件格式似乎是正确的,但仍然出现 Unresolved external symbol 错误。可能的猜测是 Microsoft 编译器标记其输出目标文件并指示它们需要链接的标准库,而 Clang 不需要,并且观察各个目标文件的十六进制转储似乎证实了这一点并给出了提示要使用的链接器命令行:

link /defaultlib:libcmt /defaultlib:oldnames hello.obj

我对这个阶段寄予厚望,但遗憾的是它仍然给出相同的 Unresolved external symbol 错误。

我还缺少什么?

最佳答案

事实证明,Clang 默认生成 32 位代码,但我使用的是 64 位 MSC,并且随着迁移到 x64,C 符号上的前导 _ 已被删除,因此在 clang 命令行上指定 -m64 可以工作。

关于Clang、Microsoft 链接器和标准库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18452967/

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