无法运行使用clang / lld / mingw编译的Windows二进制文件

时间:2019-01-26 21:28:28

标签: c windows llvm-clang mingw-w64 lld

我已从http://releases.llvm.org/download.html在Windows 10上下载并安装了clang 和mingw来自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(确切地说是__security_init_cookie)中启动时出错的exe。

但是,使用binutils的默认ld成功运行:

clang.exe -target x86_64-windows-gnu example.c -o example.exe

请注意,我希望使用mingw标头,而不是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

1 个答案:

答案 0 :(得分:1)

根据https://bugs.llvm.org/show_bug.cgi?id=40568

  

从正常的mingw安装链接到mingw导入库是一项新功能,最早出现在LLD 8中。

除非要编译lld的预发行版本,否则必须等待llvm 8.0.0的二进制发行。希望在三月的某个时候。