mstorsjo / llvm-mingw

An LLVM/Clang/LLD based mingw-w64 toolchain

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

What is the difference between this llvm distribution and the one installed from msys2 pacman?

SainoNamkho opened this issue · comments

Hello, I've used your clang for years, but I'm not aware of the differences. Is the llvm-mingw-20240306-ucrt-msys2-mingw64.tar.xz in the release the same as mingw-w64-ucrt-x86_64-clang from msys2?

Oops, the *-msys2-* files weren't really meant to be in the releases. They're only intended to be part of the nightly build testing.

Functionally, the tools in this distribution are very similar to the ones in the clang64 environment in msys2. The package you mentioned is in the ucrt environment; that behaves slightly differently, as it uses libstdc++ as the default C++ library, and uses ld.bfd instead of lld as default linker.

The main difference is that the tools in this distribution are built and usable standalone (but also work within a different environment like msys2).

Oops, the *-msys2-* files weren't really meant to be in the releases. They're only intended to be part of the nightly build testing.

Functionally, the tools in this distribution are very similar to the ones in the clang64 environment in msys2. The package you mentioned is in the ucrt environment; that behaves slightly differently, as it uses libstdc++ as the default C++ library, and uses ld.bfd instead of lld as default linker.

The main difference is that the tools in this distribution are built and usable standalone (but also work within a different environment like msys2).

Thanks a lot. Then I'm still a little confused, if *-msys2-mingw64* uses libc++ and lld, what is *-msys2-clangd64* then?

Thanks a lot. Then I'm still a little confused, if *-msys2-mingw64* uses libc++ and lld, what is *-msys2-clangd64* then?

The llvm-mingw built artifacts that are named *-msys2-mingw64* are files that were built in a msys2 mingw64 environment. I.e. the compiler executable itself uses msvcrt.dll and libstdc++ in order to run, and were linked by ld.bfd. But they compile executables that use UCRT and libc++, using lld.

If this confuses you, please forget that my releases ever contained any files named *msys2*. That was a mistake and was not meant to be there.