Hello, 

On my computer I have built and install the llvm toolchain from the source code by using the below configuration, the llvm lib is installed in the /usr/local/lib folder.
cmake -S llvm -B build -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;libcxx;libcxxabi;compiler-rt;lld" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="ARM;X86;AArch64" 

And I am trying to build musl libc 1.2.2 for aarch64 by using llvm/clang, and I use the below configure:
./configure CC=clang --target=aarch64 CFLAGS="-v --target=aarch64 --rtlib=compiler-rt" AR=/usr/local/bin/llvm-ar RANLIB=/usr/local/bin/llvm-ranlib LIBCC=-lcompiler_rt --syslibdir=/usr/local/lib

It report the error as below:


And I find the compile phase is OK, the problem occurs during the link phase, I don't understand why finally gcc is invoked.


By the way, the below configure works on my computer:

./configure CC=clang 

make -j4 



Best Regards,
Simo

发件人: Zhu Chunlin <simon_0214@hotmail.com>
发送时间: 2021年10月25日 21:26
收件人: musl@lists.openwall.com <musl@lists.openwall.com>
抄送: nullplan@gmx.net <nullplan@gmx.net>
主题: 回复: [musl] Failed to build musl 1.2.2 by using clang cross compiler
 
Hello Jeff,

Thanks! But when I update the config as you suggest:

AR=/usr/local/bin/llvm-ar \
RANLIB=/usr/local/bin/llvm-ranlib \
CC=/usr/local/bin/clang \
CFLAGS="--rtlib=compiler-rt --target=aarch64" \
ASFLAGS="-Wa,--noexecstack" \
LDFLAGS="-Wl,-fuse-ld=/usr/local/bin/ld.lld --rtlib=compiler-rt --target=aarch64" \
LIBCC=-lcompiler_rt \
./configure --target=aarch64 \
&& make

It still reports the error as below:


Another question, if I want to use LLVM tool chain instead of GCC, how should I config? Acutally I don't understand why there is gcc error, because I have specify to use clang and ld.lld.

Thanks,
Simon

发件人: Jeffrey Walton <noloader@gmail.com>
发送时间: 2021年10月25日 16:44
收件人: musl@lists.openwall.com <musl@lists.openwall.com>
抄送: nullplan@gmx.net <nullplan@gmx.net>
主题: Re: [musl] Failed to build musl 1.2.2 by using clang cross compiler
 


On Mon, Oct 25, 2021 at 1:04 AM Zhu Chunlin <simon_0214@hotmail.com> wrote:
Hello Markus,

Thanks!

AR=/usr/local/bin/llvm-ar \
RANLIB=/usr/local/bin/llvm-ranlib \
CC=/usr/local/bin/clang \
CFLAGS="-fuse-ld=/usr/local/bin/ld.lld --rtlib=compiler-rt --target=aarch64" \
LIBCC=-lcompiler_rt \
./configure --target=aarch64 \
&& make

But when I use the above config, it reports the below error, but I don't understand why there are gcc error, I have explict specify to use clang and ld.lld


-fuse-ld=/usr/local/bin/ld.lld is a LDFLAG. Since you are using GCC to drive link, set:

    LDFLAGS = "-Wl,-fuse-ld=/usr/local/bin/ld.lld "
--rtlib=compiler-rt and --target=aarch64may need to go into LDFLAGS, too.

--noexecstack is a ASFLAG. Use:

    ASFLAGS = "-Wa,--noexecstack"

Jeff