How to Cross Compile libcompiler_rt Static Library?


I’ve cross-compiled musl-libc to arm binaries with clang. It needs functions from static runtime library “libcompiler_rt.a”. I tried to build compile_rt outside the llvm source tree. Using command like “make clang_linux”, I can easily build “libcompiler_rt.a” for my host machine, which is X86_64. But how can I cross-compile the compiler_rt runtime libraries?

According to the following websites:

It seems that the makefile does not support non-X86 targets. Someone tried cmake failed as well. Any suggestions?


Hi there,

It seems that the cmake only works for X86 target?


I asked about this same question in the past (month or three ago). It is not possible to cross compile compiler-rt on Windows. If you want to cross compile you should use the make build system, not the CMake build system.

I need to correct myself. It is possible to cross compile it on Windows, but not using the provided build systems.

Hi Daniel,

Thanks for helping. I'm using ubuntu 14.04 x86_64 system. I've tried cmake
for couple of days until I give up. You are right, using make build system
seems more feasible. I've combined the compiler_rt/make/platform/ and the compiler_rt/make/platform/
So far it could cross-compile all of the files in
"compiler-rt/lib/builtins/" (*.c files). However, the libcompiler_rt.a
still missing functions such as "__aeabi_memset", "__aeabi_memcpy". These
functions were in "compiler_rt/lib/biltins/arm/" (*.S) files. They are not
included in any of the *.mk files. Do you have any idea on how to add these
assembly sources to the build list? BTW, did you build the complete
libcompiler_rt.a at the end?


I was attempting to cross compile on Windows. I ended up having to find the list in the CMake build system (not very hard) and manually creating a makefile to compile them. Took maybe 2 hours total.

I also use my own Makefiles to build compiler-rt for ELLCC. I build for ARM, Mips, Microblaze, PowerPC, and x86. This is the list of files I came up with:

More info at


I've check the compiler-rt source code and try to run "make
arm-linux-engeabi" in ellcc/libecc directory. I got the following errors:

Making libcompiler-rt for arm-linux-engeabi in compiler-rt-build
cp: cannot stat ‘Makefile.lib’: No such file or directory

I've searched through the directory but there is no "Makefile.lib". Run
"locate Makefile.lib" I find:


I've tried to use these Makefile.lib but they are not working properly:
make[1]: *** No rule to make target `install'. Stop.

Am I missing something? BTW in your makefile line 49:

$(OUT)cp -p Makefile.lib compiler-rt-build/$@/Makefile

The $(OUT) stuff at the beginning seems not useful?


Hi Chao, I don’t want to bring noise to the mailing list. I’ll respond privately. -Rich