[oe] problem building uclibc + udev

Khem Raj raj.khem at gmail.com
Wed Aug 26 02:03:42 UTC 2009


On (25/08/09 17:11), Cliff Brake wrote:
> I'm running into the following issue building udev:
> 
> NOTE: Running task 606 of 631 (ID: 8,
> /build/oe/oe-testing/openembedded/recipes/udev/udev_141.bb,
> do_compile)
> ERROR: function do_compile failed
> ERROR: log data follows
> (/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/temp/log.do_compile.14745)
> | NOTE: make -j 5
> | make  all-recursive
> | make[1]: Entering directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141'
> | Making all in udev
> | make[2]: Entering directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
> | Making all in lib
> | make[3]: Entering directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev/lib'
> | make[3]: Nothing to be done for `all'.
> | make[3]: Leaving directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev/lib'
> | make[3]: Entering directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
> | /bin/sh ../arm-angstrom-linux-uclibcgnueabi-libtool --tag=CC
> --mode=link arm-angstrom-linux-uclibcgnueabi-gcc -march=armv7-a
> -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
> -isystem/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/include
> -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2
> -ggdb3 -Wl,--as-needed
> -L/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
> -Wl,-rpath-link,/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
> -Wl,-O1 -Wl,--hash-style=gnu -o udevd udev-event.o udev-watch.o
> udev-node.o udev-rules.o udev-util.o libudev.o libudev-list.o
> libudev-util.o libudev-device.o libudev-device-db-write.o
> libudev-monitor.o libudev-enumerate.o libudev-queue.o libudev-ctrl.o
> udevd.o
> | arm-angstrom-linux-uclibcgnueabi-libtool: link:
> arm-angstrom-linux-uclibcgnueabi-gcc -march=armv7-a -mtune=cortex-a8
> -mfpu=neon -mfloat-abi=softfp
> -isystem/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/include
> -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2
> -ggdb3 -Wl,--as-needed -Wl,-rpath-link
> -Wl,/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
> -Wl,-O1 -Wl,--hash-style=gnu -o udevd udev-event.o udev-watch.o
> udev-node.o udev-rules.o udev-util.o libudev.o libudev-list.o
> libudev-util.o libudev-device.o libudev-device-db-write.o
> libudev-monitor.o libudev-enumerate.o libudev-queue.o libudev-ctrl.o
> udevd.o  -L/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging/armv7a-angstrom-linux-uclibcgnueabi/usr/lib
> | udevd.o: In function `main':
> | /build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev/udevd.c:978:
> undefined reference to `ppoll'
> | collect2: ld returned 1 exit status
> | make[3]: *** [udevd] Error 1
> | make[3]: Leaving directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
> | make[2]: *** [all-recursive] Error 1
> | make[2]: Leaving directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141/udev'
> | make[1]: *** [all-recursive] Error 1
> | make[1]: Leaving directory
> `/build/oe/oe-testing/build/angstrom-2008.1/tmp/work/armv7a-angstrom-linux-uclibcgnueabi/udev-141-r11/udev-141'
> | make: *** [all] Error 2
> | FATAL: oe_runmake failed
> 
> It appears that uclibc is being built without ppoll as the headers
> don't have it.  The beagleboard kernel is patched
> (http://cgit.openembedded.org/cgit.cgi/openembedded/commit/?id=1f0d91e152f16fbd40bb2fb3c44a30d774d4dede)
> to include ppoll, and the headers are modified as such:
> 
> cbrake at happy:/build/oe/oe-testing/build/angstrom-2008.1/tmp/staging$
> searchc ppoll
> ./armv7a-angstrom-linux-uclibcgnueabi/usr/include/asm/unistd.h:
>                          /* 336 for ppoll */
> ./beagleboard-angstrom-linux-gnueabi/kernel/arch/arm/include/asm/unistd.h:#define
> __NR_ppoll                    (__NR_SYSCALL_BASE+336)
> ./beagleboard-angstrom-linux-gnueabi/kernel/include/linux/syscalls.h:asmlinkage
> long sys_ppoll(struct pollfd __user *, unsigned int,
> ./beagleboard-angstrom-linux-gnueabi/kernel/include/asm-arm/unistd.h:#define
> __NR_ppoll                 (__NR_SYSCALL_BASE+336)
> ./armv7a-angstrom-linux-gnueabi/usr/include/asm/unistd.h:
>                          /* 336 for ppoll */
> ./armv7a-angstrom-linux-gnueabi/usr/include/sys/poll.h:extern int
> ppoll (struct pollfd *__fds, nfds_t __nfds,
> 
> However, the headers are only modified in the kernel include
> directory.  I suspect uclibc is getting unistd.h from the usr/include
> directory which does not have __NR_ppoll defined.  What is the best
> way to fix this.  I suspect we need to tell uclibc to look at the
> kernel headers?

it already does look into kernel headers to configure its system calls.
All you need is to wireup this syscall in kernel and also in
linux-libc-headers. IOW Port
http://www.spinics.net/lists/arm-kernel/msg38114.html to both above
places.

Thx

-Khem

> 
> Thanks,
> Cliff
> 
> _______________________________________________
> 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