Hi everyone, I recently sent a message that may or may not have made it to the list, on problems building an LLVM cross-compiler. Now the issue seems clear to me and is irrelevant at this point, I would like to discuss the general issue. Suppose you have a host system, a Linux distribution on an x86_64 machine, and want to build a cross-compiler for aarch64 (or any platform supported by LLVM, other than an AMD-/Intel-based machine) to cross compile a Linux distribution. The process, in my opinion, should go like this: 1. Get the sources (llvm, lld, compiler-rt, libunwind, libcxx...). 2. Build an LLVM cross-compiler toolchain using native distribution's compiler (i.e. build an x86_64 clang executable that targets aarch64). 3. Cross-compile libc and other libraries/dependencies to run the userland. 4. Cross-compile the userland. With LLVM it doesn't work: 1. You got the sources. 2. Built clang targetting, among others or only, aarch64/mips/etc. 3. Clang requires compiler-rt but you need to cross-compile compiler-rt for the target platform. *You don't have a cross-compiler*. It stops after that. To build compiler-rt you need C headers, libc runtimes, *and libclang_rt.a*. You can't cross-compile libc because you don't have compiler-rt because you don't have libc. Chicken or egg. I.e. you need a cross-compiler to build a cross-compiler. So, how do you build an LLVM-based cross-compiler? I hope I am wrong in my assumptions and if it's so, please forgive me. I also hope I made it clear. Thanks for taking time and have a nice weekend! -- caóc