linking correct libc
ng@piments.com
ng@piments.com
Tue May 26 06:12:00 GMT 2009
ng@piments.com wrote:
> Yann E. MORIN wrote:
>> "ng",
>> All,
>>
>> On Sunday 24 May 2009 22:09:27 ng@piments.com wrote:
>>> Yann E. MORIN wrote:
>>>> It is *not* needed to pass --sysroot to the compielrs build with
>>>> crosstool-NG.
>>> thanks, I realised that , it was an attempt to verofu what was
>>> happening by explicitly specifying everything. When it made no
>>> difference I concluded the built-in sysroot was correctly interpreted
>>> and the problem lay elsewhere.
>>
>> So, your toolchain is working, and you are trying to reproduce gcc's
>> internal
>> logic by passing args on the command line, right?
>>
>>>> What does the follwing command says:
>>>> /back/ts/ct-wkg//x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc
>>>> \
>>> was something missed off after the \ :?
>>
>> Yes, sorry:
>> bla-bla-gcc -print-search-dirs
> voila:
>
> /back/ts/ct-wkg//x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc
> -print-search-dirs
> install:
> /back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.3.2/
>
> programs:
> =/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../libexec/gcc/arm-unknown-linux-gnueabi/4.3.2/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../libexec/gcc/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi/4.3.2/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/
>
> libraries:
> =/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.3.2/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../lib/gcc/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/lib/arm-unknown-linux-gnueabi/4.3.2/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/lib/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../arm-unknown-linux-gnueabi//sys-root/lib/arm-unknown-linux-gnueabi/4.3.2/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../arm-unknown-linux-gnueabi//sys-root/lib/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../arm-unknown-linux-gnueabi//sys-root/usr/lib/arm-unknown-linux-gnueabi/4.3.2/:/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../arm-unknown-linux-gnueabi//sys-root/usr/lib/
>
>
>>
>>> /back/ts/ct-wkg//x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc
>>> \ -print-file-name=libc.so
>>> /back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../arm-unknown-linux-gnueabi//sys-root/usr/lib/libc.so
>>>
>>
>> OK.
>>
>>> cat
>>> /back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/bin/../arm-unknown-linux-gnueabi//sys-root/usr/lib/libc.so
>>>
>>> /* GNU ld script
>>> Use the shared library, but some functions are only in
>>> the static library, so try that secondarily. */
>>> OUTPUT_FORMAT(elf32-littlearm)
>>> GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED (
>>> /lib/ld-linux.so.3 ) )
>>> OK , so that explains the reference to /lib/libc.so.6 , is that what
>>> you would expect to see here?
>>
>> Yes, correct. Those are paths relative to the sysroot, so gcc will
>> hapilly
>> find them.
>> BTW, notice: ld-linux.so.3 -> EABI-era dynamic linker, good.
>>
>> To conclude this thread: does your toolchain correctly works by default?
>>
> Well it builds a bootable kernel and busybox but I can't get past this
> incompatible /lib/libc.so.6 error in portmap.
>
>
> CPPFLAGS="-I/back/ts/root2/usr/include"
> LDFLAGS="-L/back/ts/root2/usr/lib/" make
> arm-unknown-linux-gnueabi-gcc -L/back/ts/root2/usr/lib/ -pie portmap.o
> pmap_check.o from_local.o -lwrap -o portmap
> /back/ts/ct-ng/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/ld:
> skipping incompatible /lib/libc.so.6 when searching for /lib/libc.so.6
> /back/ts/ct-ng/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/ld:
> cannot find /lib/libc.so.6
> collect2: ld returned 1 exit status
> make: *** [portmap] Error 1
>
>
> Since that /lib/libc.so.6 would appear to be the sys-root one and you
> say that file looks good, why is it crapping out and declaring this file
> "incompatible"?
>
> Thanks again.
>
>
>> Regards,
>> Yann E. MORIN.
>>
>
>
Hi Yann,
based on the information on this problem which seems pretty complete now
, can you please explain why I am unable to compile this package?
>> To conclude this thread: does your toolchain correctly works by default?
What do you mean by "by default"? This is the minimum ammount of
variables I need to supply to get some of the files to build upto the
point were it declares libc.so.6 "incompatible".
echo $CC
arm-unknown-linux-gnueabi-gcc
CFLAGS="-march=armv4t" CPPFLAGS="-I/back/ts/root2/usr/include"
LDFLAGS="-L/back/ts/root2/usr/lib/" make
arm-unknown-linux-gnueabi-gcc -march=armv4t -Wall -Wstrict-prototypes
-fpie -I/back/ts/root2/usr/include -DHOSTS_ACCESS -DCHECK_PORT
-DIGNORE_SIGCHLD -DFACILITY=LOG_DAEMON -c -o portmap.o portmap.c
arm-unknown-linux-gnueabi-gcc -march=armv4t -Wall -Wstrict-prototypes
-fpie -I/back/ts/root2/usr/include -DHOSTS_ACCESS -DCHECK_PORT
-DIGNORE_SIGCHLD -DFACILITY=LOG_DAEMON -c -o pmap_check.o pmap_check.c
arm-unknown-linux-gnueabi-gcc -march=armv4t -Wall -Wstrict-prototypes
-fpie -I/back/ts/root2/usr/include -DHOSTS_ACCESS -DCHECK_PORT
-DIGNORE_SIGCHLD -DFACILITY=LOG_DAEMON -c -o from_local.o from_local.c
arm-unknown-linux-gnueabi-gcc -L/back/ts/root2/usr/lib/ -pie portmap.o
pmap_check.o from_local.o -lwrap -o portmap
/back/ts/ct-ng/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/ld:
skipping incompatible /lib/libc.so.6 when searching for /lib/libc.so.6
/back/ts/ct-ng/x-tools/arm-unknown-linux-gnueabi/lib/gcc/arm-unknown-linux-gnueabi/4.3.2/../../../../arm-unknown-linux-gnueabi/bin/ld:
cannot find /lib/libc.so.6
collect2: ld returned 1 exit status
make: *** [portmap] Error 1
So I would say : no, the toolchain is not working correctly in this case.
So I see a limited number of explainations.
1/ It is really finding /lib/libc.so.6 (ie the host x86 library) as
indicated by the output but contrary to the -print-search-dirs paths.
2/ It is looking in the right place but finding something different to
what is expected.
3/ It is finding a good libc but erroneously calling it incompatible.
4/ It is finding another libc in the search path but there is not:
find /back/ts/ct-wkg/x-tools -iname libc.so.6
/back/ts/ct-wkg/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sys-root/lib/libc.so.6
5/ I'm making some dumb error in using the toolchain.
If it was 5/ I'm sure you would have told me by now so I'm left with the
conclusion that there is problem with the toolchain.
thanks again, Peter.
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list