According to LLVM's Getting Started (Windows) site:
... Clang can be used to emit bitcode, directly emit object files or even linked executables using Visual Studio’s link.exe.
Why is the use of Link.exe
on Windows necessary? And, for that matter, what is used on Mac/Linux? Further down it says:
Compile the program to object code using the LLC code generator:
C:\..> llc -filetype=obj hello.bc
Link to binary using Microsoft link:
C:\..> link hello.obj -defaultlib:libcmt
Why can't LLC perform that last step? LLI seems to work fine so I assume that it interoperates with link.exe
somehow under the hood - why can't LLC?
Set a custom LLVM toolset version in the IDE For more information, see Set C++ compiler and build properties. Select the Configuration Properties > General property page. Modify the Platform Toolset property to LLVM (clang-cl), if it isn't already set. Choose Apply to save your changes.
By default, Clang uses the target x86_64-pc-windows-msvc when compiling on Windows. With this target, Clang will look for Microsoft's msvc linker on PATH and use it for linking. If you want to go that route, install Microsoft Visual Studio.
Because no one has written a linker for LLVM.
There is a project to do so (called, unimaginatively lld
) but it's not ready yet.
See http://lld.llvm.org for more details.
On the mac, people use Apple's linker, ld
.
On Linux, most people use the gnu linker, usually (also) named ld
Try MinGW-W64's ld. I've been using it with llvm's clang instead of VS tools that I used for building clang in the first place.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With