Crosstool 0.43, PowerPC 750, Ubuntu 8.0.4: glibc Versioning vs. shared-libs build problem

Christoph Lauer christoph.lauer@informatik.uni-erlangen.de
Thu Oct 30 08:09:00 GMT 2008


Hello,

I am trying to build a ppc750 crosstool-chain on my ubuntu 8.0.4 
machine. I already stumbled across the known issue in ubuntu regarding 
the "Missing " Character" error which can be solved by pointing /bin/sh 
to bash rather than dash.
However, a more complicated issue I have not been able occurs when 
building glibc.2.3.6 (gcc: 4.1.0, binutils 2.16.1), i.e the default 
config in crosstool0.43 for ppc750.
The build of binutils, gcc-code and glibc-headers all runs well, glibc 
stops with error msg:

../sysdeps/powerpc/powerpc32/dl-machine.c:38:2: #error This will not 
work with versioning turned off, sorry.
make[2]: *** 
[/home/clauer/crosstool-0.43/build/powerpc-750-linux-gnu/gcc-4.1.0-glibc-2.3.6/build-glibc/elf/dl-machine.os] 
Error 1
make[2]: Leaving directory 
`/home/clauer/crosstool-0.43/build/powerpc-750-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6/elf' 

make[1]: *** [elf/subdir_lib] Error 2
make[1]: Leaving directory 
`/home/clauer/crosstool-0.43/build/powerpc-750-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6' 

make: *** [lib] Error 2


apparently versioning is turend off and this causes trouble. Strangely 
additional --enable-versioning config-params for glibc doen not enable 
versioning. This is because of the following configure-script of glibc:

echo "${ECHO_T}$libc_cv_ld_version_script_option" >&6
if test $shared != no &&
  test $libc_cv_asm_symver_directive = yes &&
  test $libc_cv_ld_version_script_option = yes &&
  test $enable_versioning = yes; then
 VERSIONING=yes
 cat >>confdefs.h <<\_ACEOF
#define DO_VERSIONING 1
_ACEOF

else
 VERSIONING=no
fi

It seems you cannot build glibc with versioning turned on and 
shared-libs enabled. reading through the crosstool-doc I found a 
SHARED_MODE flag that could be set to "--disable-shared" but 
unfortunately shared-libs are required for a certain part of glibc:

make[1]: Leaving directory 
`/home/clauer/crosstool-0.43/build/powerpc-750-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6' 

+ make 
install_root=/opt/crosstool/gcc-4.1.0-glibc-2.3.6/powerpc-750-linux-gnu/powerpc-750-linux-gnu 
prefix= install-lib-all install-headers
make -r PARALLELMFLAGS="" CVSOPTS="" -C 
/home/clauer/crosstool-0.43/build/powerpc-750-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6 
objdir=`pwd` install-lib-all
make[1]: Entering directory 
`/home/clauer/crosstool-0.43/build/powerpc-750-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6' 

make[1]: *** No rule to make target 
`/opt/crosstool/gcc-4.1.0-glibc-2.3.6/powerpc-750-linux-gnu/powerpc-750-linux-gnu/lib/libc.so', 
needed by `install-lib-all'.  Stop.
make[1]: Leaving directory 
`/home/clauer/crosstool-0.43/build/powerpc-750-linux-gnu/gcc-4.1.0-glibc-2.3.6/glibc-2.3.6' 

make: *** [install-lib-all] Error 2


The big question is: How do I build the glibc-2.3.6 correctly without 
versioning? Is this really a glibc/gnu issue or am I doing s.th. wrong?

Thanks heaps :)
Chris

--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list