我已经从 Windows 10 下载并安装了 clang http://releases.llvm.org/download.html和来自 https://sourceforge.net/projects/mingw-w64/的明格
我正在尝试使用 clang/lld/mingw 编译一个非常基本的 C 程序:
int main(int argc, char* argv[argc + 1])
{
return 0;
}
要编译,我调用:
clang.exe -target x86_64-windows-gnu -fuse-ld=lld.exe -g -gcodeview -Wl,/debug,/pdb:example.pdb example.c -o example.exe
这将创建一个在mainCRTStartup中启动时出错的exe(准确地说是__security_init_cookie)。
但是,从 binutils 使用默认 ld 运行是成功的:
clang.exe -target x86_64-windows-gnu example.c -o example.exe
请注意,我希望使用mingw标头,而不是msvc。
我总共尝试了:
- x86_64-8.1.0-posix-she-rt_v6-rev0
- x86_64-7.3.0-posix-she-rt_v5-rev0
- x86_64-8.1.0-win32-she-rt_v6-rev0
- x86_64-8.1.0-win32-sjlj-rt_v6-rev0
没有任何运气产生一个功能程序。
所以我想知道,我在这里做错了什么吗?
编辑:我也尝试过使用 msys2 无济于事。具体说来:
pacman -S mingw-w64-x86_64-clang mingw-w64-x86_64-lld
根据 https://bugs.llvm.org/show_bug.cgi?id=40568
从普通的 mingw 安装中链接到 mingw 导入库是一项新功能,首次出现在 LLD 8 中。
除非想要编译 lld 的预发布版本,否则必须等待 llvm 8.0.0 的二进制版本发布。希望这是在三月份的某个时候。