[Scratchbox-users] Libc dependency problems setting up foreign toolchain

Jim Heck jsurf at heckheck.com
Fri Dec 1 00:44:09 EET 2006


Riku,

Thanks for the quick response.  I'm still a bit confused, however, on 
what you mean by the i686-linux-gcc3.3-glibc2.3 toolchain (it looks like 
that used to be a binary package in a previous release, but no more).

So in the latest scratchbox release, do you mean I should try to build 
an i686 toolchain in a host-gcc target using

'make CONFIG=meta/toolchain/i686-gcc3.3-glibc.conf'

from the sb-toolchain darcs directory?  Or are you referring to the 
scratchbox-toolchain-i686-linux-ct4.1.0-2.3.6tls-1.0.4 binary toolchain 
(as I can't find any other binary i686 toolchain).  Or is the host-gcc 
target toolchain the one you are referring to?

I tried building the i686-gcc3.3-glibc.conf toolchain under a host-gcc 
target, but ran into problems there too (see below, looks like something 
to do with pthread support).

Finally, once I have the older gcc/glibc toolchain, how will that 
resolve my problem of crosstool's tools not being dependent on the libc 
of the environment in which they are built.  Will the sheer fact that 
the gcc/glibc is older than what I'm trying to build cause crosstool to 
bake in dependence on its own libraries instead of the (older) host 
environment libraries?  I would have thought that if it is picking up 
local dependencies, it will now be dependent on the older host libraries 
(glibc 2.3.x, where x < 6).  I have to admit it's not clear to me why 
the crosstool built gcc is not completely bootstrapped to the versions 
specified in the first place.

Thanks for all your help,

-Jim Heck

i686-linux-gcc assert.c -c -std=gnu99 -O2 -Wall -Winline 
-Wstrict-prototypes -Wwrite-strings -mpreferred-stack-boundary=2  
-DFATAL_PREPARE_INCLUDE='<fatal-prepare.h>'   -I../include -I. 
-I/home/jheck/sb-toolchains/libc/glibc-2.3/work/build-glibc/assert -I.. 
-I../libio  -I/home/jheck/sb-toolchains/libc/glibc-2.3/work/build-glibc 
-I../sysdeps/i386/elf -I../linuxthreads/sysdeps/unix/sysv/linux 
-I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix 
-I../sysdeps/unix/sysv/linux/i386 -I../sysdeps/unix/sysv/linux 
-I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman 
-I../sysdeps/unix/inet -I../sysdeps/unix/sysv/i386 
-I../sysdeps/unix/sysv -I../sysdeps/unix/i386 -I../sysdeps/unix 
-I../sysdeps/posix -I../sysdeps/i386/i686/fpu -I../sysdeps/i386/i686 
-I../sysdeps/i386/i486 -I../sysdeps/i386/fpu -I../sysdeps/i386 
-I../sysdeps/wordsize-32 -I../sysdeps/ieee754/ldbl-96 
-I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 
-I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic 
-nostdinc -isystem 
/scratchbox/compilers/i686-linux-gcc3.3-glibc2.3/lib/gcc-lib/i686-linux/3.3.4/include 
-isystem /scratchbox/compilers/i686-linux-gcc3.3-glibc2.3/usr/include  
-include ../include/libc-symbols.h       -o 
/home/jheck/sb-toolchains/libc/glibc-2.3/work/build-glibc/assert/assert.o 
-MD -MP -MF 
/home/jheck/sb-toolchains/libc/glibc-2.3/work/build-glibc/assert/assert.o.dt
In file included from ../sysdeps/unix/sysv/linux/fatal-prepare.h:19,
                 from assert.c:42:
../include/pthread.h:1:26: pthread.h: No such file or directory
assert.c: In function `__assert_fail':
assert.c:53: error: `pthread_setcancelstate' undeclared (first use in 
this function)
assert.c:53: error: (Each undeclared identifier is reported only once
assert.c:53: error: for each function it appears in.)
assert.c:53: error: `pthread_setcancelstate' used prior to declaration
assert.c:53: warning: implicit declaration of function 
`pthread_setcancelstate'
assert.c:53: error: `PTHREAD_CANCEL_DISABLE' undeclared (first use in 
this function)
make[5]: *** 
[/home/jheck/sb-toolchains/libc/glibc-2.3/work/build-glibc/assert/assert.o] 
Error 1
make[5]: Leaving directory 
`/home/jheck/sb-toolchains/libc/glibc-2.3/work/glibc-2.3.2/assert'
make[4]: *** [assert/subdir_lib] Error 2
make[4]: Leaving directory 
`/home/jheck/sb-toolchains/libc/glibc-2.3/work/glibc-2.3.2'
make[3]: *** [all] Error 2
make[3]: Leaving directory 
`/home/jheck/sb-toolchains/libc/glibc-2.3/work/build-glibc'
make[2]: *** [build-work/build-glibc/Makefile] Error 2
make[2]: Leaving directory `/home/jheck/sb-toolchains/libc/glibc-2.3'
make[1]: *** [dep-../../libc/glibc-2.3] Error 2
make[1]: Leaving directory `/home/jheck/sb-toolchains/meta/toolchain'
make: *** [build] Error 2


Riku Voipio wrote:
>   
>> My second problem is that my gcc compiler is dependent on GLIBC_2.4, 
>> which is probably due to having been built in the Ubuntu environment 
>> which has libc6 version '2.4-1ubunt' installed.  This is not exported by 
>> the libc.so.6 that I have in my compiler tree (since I built against 2.3.6).
>>     
>
> Compile the toolchain in a x86 target inside scratchbox. This is
> mentioned in thw wiki page:
>
> http://scratchbox.org/wiki/CrossToolToolchain
>
>   
>> I know this is more of a crosstool question, but does anyone know how to 
>> configure crosstool to build a gcc3.4 compiler that is independent of 
>> the host environment (e.g. no dependency on the libc for the host on 
>> which the compiler was built)?
>>     
>
> By using a older libc when compiling the crosstoolchain. Which simplest
> by following the wiki's advice and using i686-linux-gcc3.3-glibc2.3
> toolchain.
>
>
>   


More information about the Scratchbox-users mailing list