I'm currently using this to compile with LLVM

AR=/usr/lib/llvm-13/bin/llvm-ar \
RANLIB=/usr/lib/llvm-13/bin/llvm-ranlib \
CC=/usr/lib/llvm-13/bin/clang \
CFLAGS="-fuse-ld=/usr/lib/llvm-13/bin/ld.lld --rtlib=compiler-rt --target=armv7a-linux-eabihf -mcpu=cortex-a8" \
LIBCC=-lcompiler_rt \
./configure \
--prefix=$PREFIX/usr \
--syslibdir=$PREFIX/lib \
--target=armv7a-linux-eabihf \
&& make \
&& make install

This is the output from ./configure

checking for C compiler... /usr/lib/llvm-13/bin/clang
checking whether C compiler works... yes
checking whether compiler accepts -Werror=unknown-warning-option... yes
checking whether compiler accepts -Werror=unused-command-line-argument... yes
checking whether compiler accepts -Werror=ignored-optimization-argument... yes
checking whether linker accepts -Werror=unknown-warning-option... yes
checking whether linker accepts -Werror=unused-command-line-argument... yes
checking for C compiler family... clang
checking for toolchain wrapper to build... clang
checking target system type... armv7a-linux-eabihf
checking whether compiler accepts -std=c99... yes
checking whether compiler accepts -nostdinc... yes
checking whether compiler accepts -ffreestanding... yes
checking whether compiler accepts -fexcess-precision=standard... no
checking whether compiler accepts -frounding-math... yes
checking whether compiler needs attribute((may_alias)) suppression... no
checking whether compiler accepts -Wa,--noexecstack... yes
checking whether compiler accepts -fno-stack-protector... yes
checking whether compiler accepts -fno-tree-loop-distribute-patterns... no
checking whether we should preprocess assembly to add debugging information... no
checking for optimization settings... using defaults
checking whether compiler accepts -Os... yes
components to be optimized for speed: internal malloc string
checking whether compiler accepts -pipe... yes
checking whether compiler accepts -fomit-frame-pointer... yes
checking whether compiler accepts -fno-unwind-tables... yes
checking whether compiler accepts -fno-asynchronous-unwind-tables... yes
checking whether compiler accepts -ffunction-sections... yes
checking whether compiler accepts -fdata-sections... yes
checking whether compiler accepts -w... yes
checking whether compiler accepts -Wno-pointer-to-int-cast... yes
checking whether compiler accepts -Werror=implicit-function-declaration... yes
checking whether compiler accepts -Werror=implicit-int... yes
checking whether compiler accepts -Werror=pointer-sign... yes
checking whether compiler accepts -Werror=pointer-arith... yes
checking whether compiler accepts -Werror=int-conversion... yes
checking whether compiler accepts -Werror=incompatible-pointer-types... yes
checking whether compiler accepts -Werror=discarded-qualifiers... no
checking whether compiler accepts -Werror=discarded-array-qualifiers... no
checking whether compiler accepts -Qunused-arguments... yes
checking whether compiler accepts -Waddress... yes
checking whether compiler accepts -Warray-bounds... yes
checking whether compiler accepts -Wchar-subscripts... yes
checking whether compiler accepts -Wduplicate-decl-specifier... yes
checking whether compiler accepts -Winit-self... yes
checking whether compiler accepts -Wreturn-type... yes
checking whether compiler accepts -Wsequence-point... yes
checking whether compiler accepts -Wstrict-aliasing... yes
checking whether compiler accepts -Wunused-function... yes
checking whether compiler accepts -Wunused-label... yes
checking whether compiler accepts -Wunused-variable... yes
checking preprocessor condition __PIC__... false
checking whether linker accepts -Wl,--sort-section,alignment... yes
checking whether linker accepts -Wl,--sort-common... yes
checking whether linker accepts -Wl,--gc-sections... yes
checking whether linker accepts -Wl,--hash-style=both... yes
checking whether linker accepts -Wl,--no-undefined... yes
checking whether linker accepts -Wl,--exclude-libs=ALL... yes
checking whether linker accepts -Wl,--dynamic-list=./dynamic.list... yes
using compiler runtime libraries: -lcompiler_rt
checking preprocessor condition __thumb2__... false
checking preprocessor condition __ARMEB__... false
checking preprocessor condition __ARM_PCS_VFP... true
checking whether clang's vfp asm constraints work... yes
configured for arm variant: armhf
checking whether compiler's long double definition matches float.h... yes
checking preprocessor condition __FAST_MATH__... false
creating config.mak... done

but now I get this error when compiling

ld.lld: error: unable to find library -lcompiler_rt

Have I made an error in the way I'm calling ./configure?

Just to reiterate, I'm trying to use LLVM to cross compile from x86_64 Linux to armv7a-linux-eabihf.

On Tue, Oct 12, 2021 at 5:09 PM Nagakamira <nagakamira@gmail.com> wrote:
You can pass --unwindlib=libunwind and rtlib, they are both link options

On Tue, Oct 12, 2021, 8:55 AM Matt Andrews <mattandrews@gmail.com> wrote:
> --rtlib=compiler-rt

Is that a compiler option or a linker option? I used it in both places, but still get the same error.

On Tue, Oct 12, 2021 at 4:00 PM Nagakamira <nagakamira@gmail.com> wrote:
--rtlib=compiler-rt

On Tue, Oct 12, 2021, 7:58 AM Matt Andrews <mattandrews@gmail.com> wrote:
> -fuse-ld=lld

I actually used

    -fuse-ld=ld.lld

That did the trick, but has unlocked another error

    ld.lld: error: unable to find library -lgcc
    ld.lld: error: unable to find library -lgcc_eh

I thought musl compiles with it's own headers?

On Tue, Oct 12, 2021 at 3:54 PM Nagakamira <nagakamira@gmail.com> wrote:
-fuse-ld=lld

On Tue, Oct 12, 2021, 3:26 AM Jeffrey Walton <noloader@gmail.com> wrote:
On Mon, Oct 11, 2021 at 7:55 PM Matt Andrews <mattandrews@gmail.com> wrote:
>
> >> How do I specify which linker to use?
> >
> >LD. Also see https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html.
>
> Looking at the ./configure for musl (which is not based on autoconf according to the docs), there is no mention of LD. Setting LD for ./configure and/or the call to make still results in the error.
>
> Who calls the linker? The compiler or make? Shouldn't clang know where it's linker is? How to tell clang which linker to use?

You can have the compiler driver call the linker for you by specifying
-o with an output file name. In that case, $CC or $CXX will drive the
link. And in this case, your LDFLAGS should prefix options with -Wl to
tell the compiler driver the option is for the linker.

Jeff