[oe] KERNEL_INCLUDES in uClibc.

Mikael Rosbacke mikael at rosbacke.org
Mon Nov 17 12:43:04 UTC 2008


mån 2008-11-17 klockan 13:25 +0100 skrev Koen Kooi:
> On 17-11-08 12:58, Mikael Rosbacke wrote:
> > Good day.
> >
> > I'm currently trying to get a uClibc based minimal image for x86 to
> > build and have some problems with it. I'm using DISTRO='minimal-uclibc'
> > and MACHINE='x86' and trying to build the target 'minimal-image'.
> 
> Try using the angstrom distribution, since minima-uclibc isn't really 
> support or working currently.
> 
I've managed to get Angstrom working with glibc some days ago. But I
would like to have something smaller. I scanned the distro folder but
couldn't find a uClibc variant of it. Is there some other way to make
angstrom use the uclibc?

tnx,

--- Mikael R

> regards,
> 
> Koen
> 
> >
> > I get a failed build on the packet uclibc-initial. I tried doing the
> > install stage which went fine. But with the command:
> >    bitbake -b uclibc-initial_0.9.30 -c build -D -D
> >
> > I get:
> > ...
> > # Remove ifaddrs.h since the corresponding functionality is disabled
> > rm
> > -f /home/mikaelr/oe/tmp/staging/i486-linux-uclibc/usr/include/ifaddrs.h
> >    AS lib/crt1.o
> > CROSS COMPILE Badness: /usr/include in INCLUDEPATH: /usr/include/
> > cc1: internal compiler error: in add_path, at c-incpath.c:362
> > Please submit a full bug report,
> > with preprocessed source if appropriate.
> > See<URL:http://gcc.gnu.org/bugs.html>  for instructions.
> > make: *** [lib/crt1.o] Error 1
> > DEBUG:
> > Parsing /home/mikaelr/oe/openembedded/packages/uclibc/uclibc-initial_0.9.30.bb (full)
> > DEBUG:
> > BB /home/mikaelr/oe/openembedded/packages/uclibc/uclibc-initial_0.9.30.bb: handle(data)
> > DEBUG: BB uclibc_0.9.30.bb: handle(data, include)
> > DEBUG: BB uclibc.inc: handle(data, include)
> > DEBUG: update_data()
> > DEBUG: update_data()
> > DEBUG: update_data()
> > NOTE: package uclibc-initial-0.9.30: started
> > ...
> >
> > It seems gcc is complaining about trying to include host system headers
> > while cross compiling. I managed to reproduce the error in a normal
> > build from the uclibc tarball using the i486 compiler built with the oe
> > toolchain.
> >
> > The uclibc accepts another make variable KERNEL_HEADERS. I've modified
> > the tree according to this patch:
> >
> > mikaelr at akaza1:~/oe/openembedded$ git diff
> > diff --git a/packages/uclibc/uclibc-initial_0.9.30.bb
> > b/packages/uclibc/uclibc-initial_0.9.30.bb
> > index c56e5fb..679a55e 100644
> > --- a/packages/uclibc/uclibc-initial_0.9.30.bb
> > +++ b/packages/uclibc/uclibc-initial_0.9.30.bb
> > @@ -9,13 +9,18 @@ PACKAGES = ""
> >
> >   do_stage() {
> >          # Install initial headers into the cross dir
> > +       echo "Hello!"
> >          make PREFIX= DEVEL_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
> >                  RUNTIME_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
> > +
> > KERNEL_HEADERS=/home/mikaelr/oe/tmp/work/i486-linux-uclibc/linux-libc-headers-2.6.23-r3/image/usr/include/ \
> >                  pregen install_dev
> > +       echo "Hello2!"
> >          make PREFIX= DEVEL_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
> >                  RUNTIME_PREFIX=${UCLIBC_STAGE_PREFIX}/ \
> > +               KERNEL_HEADERS=
> > ${WORKDIR}/i486-linux-uclibc/linux-libc-headers-2.6.23-r3/image/usr/include/ \
> >                  lib/crt1.o lib/crti.o lib/crtn.o
> >
> > +       echo "Hello3!"
> >          install -d ${CROSS_DIR}/${TARGET_SYS}
> >          ln -sf include ${CROSS_DIR}/${TARGET_SYS}/sys-include
> >
> > diff --git a/packages/uclibc/uclibc.inc b/packages/uclibc/uclibc.inc
> > index 9b27e1f..5f8d15d 100644
> > --- a/packages/uclibc/uclibc.inc
> > +++ b/packages/uclibc/uclibc.inc
> > @@ -147,6 +147,7 @@ do_configure() {
> >   }
> >
> >   do_stage() {
> > +       echo "Hello4!"
> >          # This MUST be done first because we
> >          # will install crt1.o in the install_dev stage and gcc needs it
> >
> > mikaelr at akaza1:~/oe/openembedded$
> >
> > The build error changes to:
> > ...
> > # Remove ifaddrs.h since the corresponding functionality is disabled
> > rm
> > -f /home/mikaelr/oe/tmp/staging/i486-linux-uclibc/usr/include/ifaddrs.h
> >    AS lib/crt1.o
> > libc/sysdeps/linux/alpha/crt1.S: Assembler messages:
> > libc/sysdeps/linux/alpha/crt1.S:43: Error: alignment not a power of 2
> > libc/sysdeps/linux/alpha/crt1.S:45: Error: unknown pseudo-op: `.ent'
> > libc/sysdeps/linux/alpha/crt1.S:57: Error: unknown pseudo-op: `.frame'
> > libc/sysdeps/linux/alpha/crt1.S:58: Error: no such instruction: `br
> > $29,1f'
> > libc/sysdeps/linux/alpha/crt1.S:59: Error: no such instruction: `ldgp
> > $29,0($29)'
> > libc/sysdeps/linux/alpha/crt1.S:60: Error: suffix or operands invalid
> > for `sub'
> > libc/sysdeps/linux/alpha/crt1.S:61: Error: suffix or operands invalid
> > for `mov'
> > libc/sysdeps/linux/alpha/crt1.S:62: Error: unknown pseudo-op:
> > `.prologue'
> > libc/sysdeps/linux/alpha/crt1.S:65: Error: no such instruction: `lda
> > $16,main'
> > libc/sysdeps/linux/alpha/crt1.S:67: Error: no such instruction: `ldl
> > $17,16($30)'
> > libc/sysdeps/linux/alpha/crt1.S:68: Error: no such instruction: `lda
> > $18,24($30)'
> > libc/sysdeps/linux/alpha/crt1.S:71: Error: no such instruction: `lda
> > $19,_init'
> > libc/sysdeps/linux/alpha/crt1.S:72: Error: no such instruction: `lda
> > $20,_fini'
> > libc/sysdeps/linux/alpha/crt1.S:75: Error: suffix or operands invalid
> > for `mov'
> > libc/sysdeps/linux/alpha/crt1.S:78: Error: no such instruction: `stq
> > $30,0($30)'
> > libc/sysdeps/linux/alpha/crt1.S:82: Error: no such instruction: `jsr
> > $26,__uClibc_main'
> > libc/sysdeps/linux/alpha/crt1.S:86: Error: invalid character '_' in
> > mnemonic
> > make: *** [lib/crt1.o] Error 1
> > ERROR: function do_stage failed
> > ERROR: see log
> > in /home/mikaelr/oe/tmp/work/x86-linux-uclibc/uclibc-initial-0.9.30-r0/temp/log.do_stage.4580
> > ...
> >
> > Of some reason, the uclibc want to build the alpha version which, by
> > coincidence is the first target listed when manually configuring the
> > uclibc sources. I would suspect there is a missing configuration at this
> > stage.
> >
> > In the log, I can see the 'Hello1' message but not the second one so it
> > should be the first make command failing.
> >
> > Is this a known issue and is there a simple workaround for this? It
> > seems to be the type of thing that would hit more ppl than me. I've done
> > the initial build with gcc 4.3 but also had it with a manually built
> > native toolchain for 4.1.2.
> >
> > Is it worthwhile to continue along this path or is there a better way to
> > get an x86 uclibc image using open embedded?
> >
> > Thanks in advance for any advice.
> >
> > --- Mikael R
> 
> 
> 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel





More information about the Openembedded-devel mailing list