无法 运行 windows 使用 clang/lld/mingw 编译的二进制文件
Unable to run windows binary compiled with clang/lld/mingw
我已经在 windows 10 从 http://releases.llvm.org/download.html 下载并安装了 clang
和来自 https://sourceforge.net/projects/mingw-w64/
的 mingw
我正在尝试使用 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 headers,而不是 msvc。
我总共尝试了:
- x86_64-8.1.0-posix-seh-rt_v6-rev0
- x86_64-7.3.0-posix-seh-rt_v5-rev0
- x86_64-8.1.0-win32-seh-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
Linking against mingw import libraries from a normal mingw installation is a new feature, first present in LLD 8.
除非想编译lld的预发布版本,否则必须等待llvm 8.0.0的二进制版本。这有望在 3 月的某个时候进行。
我已经在 windows 10 从 http://releases.llvm.org/download.html 下载并安装了 clang 和来自 https://sourceforge.net/projects/mingw-w64/
的 mingw我正在尝试使用 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 headers,而不是 msvc。
我总共尝试了:
- x86_64-8.1.0-posix-seh-rt_v6-rev0
- x86_64-7.3.0-posix-seh-rt_v5-rev0
- x86_64-8.1.0-win32-seh-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
Linking against mingw import libraries from a normal mingw installation is a new feature, first present in LLD 8.
除非想编译lld的预发布版本,否则必须等待llvm 8.0.0的二进制版本。这有望在 3 月的某个时候进行。