[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