my busybox +android bionic + ndk tips, etc

Tito farmatito at tiscali.it
Mon Aug 29 21:48:55 UTC 2011


On Monday 29 August 2011 22:41:42 you wrote:
> --- On Mon, 29/8/11, Tito <farmatito at tiscali.it> wrote:
> 
> > Hin-Tak Leung wrote:
> > > I have thought of filing a bug, but then there are too
> > much loose information I'd like to post and probably are a
> > few bug reports, so here they are: I have had a go at using
> > the android ndk to build busybox against bionic, instead of
> > against android source with an arm-targeted cross-gcc. (I
> > think some of the recommendations online - using
> > codesourcery's arm-gcc to build static, is just wrong).
> > Hi,
> > Why is it wrong? It is the only way to obtain a fully
> > working
> > busybox binary with all the functionality denied by the
> > crippled
> > bionic libc. You can even use Aboriginal linux (http://landley.net/aboriginal/)
> > to compile it statically against uclibc for a smaller
> > binary
> > (or buildroot if you prefer).
> 
> It is wrong because (1) while it is probably harmless, glibc/eglibc is not bionic libc, and the kernel interfaces are probably subtly different - and you might get subtly bugs/misbehavior. (2) the binary is unnessarilly large.
Hi,
I think the point in using busybox on android is to get the funcionality 
that is missing in the native tools like toolbox and the like.
You will not get it unless you use a full featured libc.
A side effect is that you don't get the bugs and misbehaviours
due to a libc full of stubs and crippled stuff (as the missing of a passwd field
explicitily set to "x" in struct passwd).

> This is mostly a generic criticism for statically build against one brand/version/ of libc and hoping that the result would work correctly against a different environment.

In the modern devices space usually is not the problem also just compiling against bionic libc
is no less hoping that it works than a static build.
> 
> I have looked a bit and some of the missing parts or headers e.g. headers for net/ethernet.h - for ifconfig probably make sense because android also have 3G and other non-ethernet interface, so ifconfig isn't as useful and may even be misleading. (e.g. "ifconfig <everything> down" does not kill all network connectivity, say).
> 

You don't need to use busybox for device management unless you need to achieve
something that the native tools don't permit. Mostly busybox is needed to have
more comfortable and standard behaving tools, nonetheless in most cooked
android roms it takes over parts of toolbox functions because it just works better.
I agree with you tough that is mostly a matter of taste :-)

Ciao,
Tito




More information about the busybox mailing list