Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAD0C5PADUUykKQyoB3OvS=O74c2LN_cq7yLLNH6N8G8Tmm4cuA@mail.gmail.com>
Date: Wed, 13 Oct 2021 13:34:14 +1100
From: Matt Andrews <mattandrews@...il.com>
To: musl@...ts.openwall.com
Subject: Re: Newbie cross compiling with LLVM

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@...il.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@...il.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@...il.com> wrote:
>>
>>> --rtlib=compiler-rt
>>>
>>> On Tue, Oct 12, 2021, 7:58 AM Matt Andrews <mattandrews@...il.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@...il.com>
>>>> wrote:
>>>>
>>>>> -fuse-ld=lld
>>>>>
>>>>> On Tue, Oct 12, 2021, 3:26 AM Jeffrey Walton <noloader@...il.com>
>>>>> wrote:
>>>>>
>>>>>> On Mon, Oct 11, 2021 at 7:55 PM Matt Andrews <mattandrews@...il.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
>>>>>>
>>>>>

Content of type "text/html" skipped

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.