[poky] compile application header file missing

Gerard van den Bosch gerard at de-haardt.com
Tue Mar 15 08:03:16 PDT 2011


On 03/15/2011 02:38 PM, Richard Purdie wrote:
> On Tue, 2011-03-15 at 11:57 +0100, Gerard van den Bosch wrote:
>> Hello,
>>
>> I have programmed an application that uses the OpenSLP library and thus
>> needs the header file from it.
>> OpenSLP is already compiled and running fine on the target.
>>
>> But when I try to compile my application it can't find the header file.
>> When I print out the CFLAGS with bitbake myimage -e | grep CFLAGS the
>> BUILD_CFLAGS point to:
>> /home/gerard/green-3.3/build/tmp/sysroots/i686-linux/usr/include
>> The slp.h is indeed missing, but it is located at:
>> /home/gerard/green-3.3/build/tmp/sysroots/armv7a-poky-linux-gnueabi/usr/include
>>
>> How can I change the CFLAGS to look in the other folder or force OpenSLP
>> to drop it in the i686 folder?
>>
>> I have added OpenSLP to my DEPENDS in the recipe, also tried RDEPENDS
>> but it didn't solve the problem.
> You should be adding OpenSLP to DEPENDS. The toolchain should be
> automatically searching the arm sysroot /usr/include directory for
> include files which is where your file is.
>
> I appreciate this is the green release, in master we have this in
> meta/conf/bitbake.conf:
>
> TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TARGET}"
>
> export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
>
> Back in green, this option should be being hardcoded into gcc as the
> default sysroot option but you could try explicitly setting it.
>
> Note that BUILD_CFLAGS is the wrong place to look, those are for native
> build tools, not target ones. You want to use TARGET_CFLAGS and
> TARGET_CFLAGS should be the same as CFLAGS.
>
> After reading the above, if your image *is* using BUILD_CFLAGS and
> BUILD_CC instead of CC, that is your real problem, it should be using
> the target device compiler, not the build one.
>
> Cheers,
>
> Richard
>
I am indeed using the Green release.

The TARGET_CFLAGS are indeed the same as the CFLAGS. The system is using the default CC and not the BUILD_CC, thanks for pointing out the difference.

I have added the --sysroot option pointing to the arm sysroot to the CFLAGS in my recipe, with compilation it now looks like this:
arm-poky-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fno-tree-vectorize -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb -feliminate-unused-debug-types --sysroot=/home/gerard/green-3.3/build/tmp/sysroots/armv7a-poky-linux-gnueabi/ libxmlpcp.c -o libxmlpcp.o

This removes the missing SLP.h error.

Is this problem related to my recipe or did I broke my build environment?

My recipe looks like this:
DESCRIPTION = "libxmlpcp"
SECTION = "examples"
DEPENDS = "openslp libxml2"
LICENSE = "LGPL"

SRC_URI = "file://libxmlpcp.tar.gz"

CFLAGS += --sysroot=/home/gerard/green-3.3/build/tmp/sysroots/armv7a-poky-linux-gnueabi/

do_install() {
     install -d ${D}${libdir}
     install -d ${D}${includedir}
     oe_runmake 'INSTALLHEADERDIR=${D}${includedir}' 'INSTALLLIBDIR=${D}${libdir}' \
     install
}

Regards,
Gerard









More information about the poky mailing list