[llvm-dev] Invoking lld for PE/COFF (Windows) linking

Edward Diener via llvm-dev llvm-dev at lists.llvm.org
Wed Mar 29 07:56:58 PDT 2017


I build llvm/clang/lld from source on Windows using mingw-64/gcc-6.3. I 
use clang++ both to test clang targeting gcc and clang targeting VC++. 
When using clang targeting VC++ I use the appropriate target triple when 
compiling and am trying to use lld to link the object file(s) into an 
exe. To do that I use the clang option "-fuse-ld=lld" when linking. 
According to the llvm doc on using lld with PE/COFF on Windows at
https://lld.llvm.org/windows_support.html:

"LLD supports Windows operating system. When invoked as lld-link.exe or 
with -flavor link, the driver for Windows operating system is used to 
parse command line options, and it drives further linking processes. LLD 
accepts almost all command line options that the linker shipped with 
Microsoft Visual C++ (link.exe) supports."

Unfortunately with clang++ attempting to use "-fuse-ld=lld-link" when 
linking outputs:

"clang++.exe: error: unsupported value 'lld_link' for -linker option"

So I must use "-fuse-ld=lld". Does this mean that I should be passing 
"-flavor link" to the lld linker ? If so, how do I do that ? If not, 
what do I do to have lld work with PE/COFF linking rather than ELF linking ?

I have attempted to pass to the clang++ when linking:

1) "-flavor link", which outputs:
clang++.exe: error: unknown argument: '-flavor'
clang++.exe: error: no such file or directory: 'link'

2) -flavor=link", which outputs:
clang++.exe: error: unknown argument: '-flavor=link'

3) -Wl,-flavor,link, which outputs
C:\Programming\VersionControl\bninja_installed_clang\bin\lld: error: 
unknown argument: -flavor

4) -Wl,-flavor=link, which outputs
C:\Programming\VersionControl\bninja_installed_clang\bin\lld: error: 
unknown argument: -flavor=link

What is the "magic" invocation that will allow me to invoke the lld 
linker from the clang++ command, but get the linker to work in PE/COFF 
mode rather than in ELF mode, so it will link object files created by 
clang targeting VC++ ?



More information about the llvm-dev mailing list