[ANNOUNCE] uClibc-0.9.30-rc2 released

Rob Landley rob at landley.net
Sun Oct 19 04:35:55 UTC 2008


On Saturday 18 October 2008 13:28:20 Vladimir Dronnikov wrote:
> Hello, Rob!
>
> > The mini-native tarballs...
>
> I could not chroot to it cleanly. Will be continuing testing...

Ah, sorry:  chroot dirname /tools/bin/bash
or: chroot dirname /tools/bin/chroot-setup.sh

(The tarballs I have up are based on the Linux From Scratch intermediate 
stage, so everything's in the /tools directory.  That's not a requirement, 
just how the current ones are set up.  There are other build options in the 
script, and a lot of easy changes to make to it...)

> > The cross-compiler...
>
> 0) Looks that it is what I need!
> 1) They are statically linked -- that is great!

Statically linked against uClibc even. :)

> 2) They miss bison/flex/autotools -- can you add them?

Shouldn't it use the ones installed on your host system when you're cross 
compiling?

If you mean they're not in the target root filesystem, you can build them 
under it.  (I've done this before.)

The theory behind the project is to cross compile the absolute minimum system 
under which one can natively build a complete Linux From Scratch system.  
(Once you've got that, you should be able to build debian or gentoo or any 
other distro on whatever your target is.  All your problems from there are 
native build ones, all the fiddly cross compiling is over and done with.)

In practice, the glibc in LFS 6.3 won't build on a host that doesn't have TLS 
support.  (Yet again, glibc is broken.)  You should be able to build a uClibc 
LFS, though, and once I get a uClibc with TLS...

> 3) I can't get configure scripts working -- configure complains it
> can't find ld on the $PATH. How can I fix that? --host=i686 does not
> solve the problem. I had to manually symlink i686-(.*) to non-prefixed
> ones.

That's what /tools/bin/chroot-setup.sh is for, it makes lots of symlinks and 
empty directories so the /tools thing, mounts /proc and /sys... Generally 
gives you something more like a normal build environment.

qemu-setup.sh is the same script, except if run with that name it does extra 
work (ifconfig and such) that you don't want to do in a chroot.

> 4) g++ and its libes/headers missed.

Actually they're there but the wrapper script isn't tested for 'em.  I really 
should get around to that, but I really don't use c++ much for fun.

> 5) nasm?

Just the gas that goes with binutils.  (You're welcome to build it yourself.  
I'm not sure how many targets nasm supports...)

> 6) gcc 4.3.2, uClibc 0.9.30?

uClibc 0.9.30-rc2 I have here, I just haven't uploaded it yet.  (I can if you 
like.)

Newer gcc versions don't work with arm soft float.  (Specifically, they don't 
put the soft float functions in libgcc.a, so you can't statically build 
anything and the cross compiler doesn't work at _all_.  (The cross compiler 
is built with --disable-shared to avoid the whole "libgcc_s.so needs libc.so" 
chicken and egg problem.  The native compiler is build after uClibc is, so 
it's --enable-shared and has a libgcc_s.so.  This still doesn't fix static 
linking, though.)

Even 4.1.2 needed to be patched to make it work, but the gcc build system 
gratuitously changed in 4.2 and the patch doesn't work, nor is it easily 
adapted.  Peter Mazinger gave me some tips on how to go about doing it for 
4.3, I just haven't gotten around to it...

Rob



More information about the uClibc mailing list