[yocto] Yocto SDK generated - unable to compile application

Evan O'Loughlin evan.oloughlin at vitalograph.ie
Thu Sep 20 03:28:22 PDT 2018


________________________________________
From: Bas Mevissen [abuse at basmevissen.nl]
Sent: 20 September 2018 10:50
To: Evan O'Loughlin
Cc: yocto at yoctoproject.org
Subject: Re: [yocto] Yocto SDK generated - unable to compile application

On 2018-09-20 11:40, Evan O'Loughlin wrote:
> -----Original Message-----
> From: Bas Mevissen [mailto:abuse at basmevissen.nl]
> Sent: 20 September 2018 10:12
> To: Evan O'Loughlin <evan.oloughlin at vitalograph.ie>
> Cc: yocto at yoctoproject.org
> Subject: Re: [yocto] Yocto SDK generated - unable to compile
> application
>
> On 2018-09-20 10:08, Evan O'Loughlin wrote:
>> Hello,
>>
>> I’m having an issue when I try to use the SDK generated by my yocto
>> instance.
>> Currently I have yocto set-up to correctly build my image – this all
>> works well.
>>
>> I've built the SDK in the following ways:
>>    * bitbake {image} –c populate_sdk
>>    * bitbake meta-toolchain-qt5
>>    * bitbake {image-sdk} using a separate recipe with the options:
>>        - require {image}.bb
>>        - IMAGE_FEATURES += " dev-pkgs tools-sdk tools-debug
>> eclipse-debug debug-tweaks"
>>        - IMAGE_INSTALL += "kernel-devsrc"
>>        - inherit populate_sdk populate_sdk_qt5
>>
>>
>> When I try to use the generated SDKs I get the error below:
>> Simple helloworld app:
>>    #include <stdio.h>
>>    #include <stdlib.h>
>>    #include <stddef.h>
>>    #include <cstddef>
>>
>>    int main (int argc, char** argv)
>>    {
>>       printf("Hello World\n");
>>       return 0;
>>    }
>>
>> Compile error:
>>    ${CC} helloworld.c
>>    helloworld.c:4:19: fatal error: cstddef: No such file or directory
>>    #include <cstddef>
>>                     ^
>>    compilation terminated
>>
>>
>> Have I missed a step in generating the SDK?
>>
>>
>
> No, your SDK looks fine. The solution is to just remove the line
>
> #include <cstddef>
>
> from your c sources or use the g++ compiler (called ${CXX) in
> Makefile) to compile the source.
>
>> Regards,
>> vitalEol

> Hi Bas,
>
> I'm using the offending line in helloworld.c to highlight the issue I'm
> seeing.
>
> My main program is a Qt application where I see the same issue when
> trying to build in QtCreator.
>
> My issue relates to the fact that several include files are not
> readily available after 'sourcing' the environment setup.
>
> Do I need to adjust/include other recipes when building the SDK?
>

I might be wrong, but this looks like you are using the gcc compiler
instead of the g++ one. See the second part of my answer.

To check your environment, check in your sdk that the file cstddef
exists somewhere in /usr/include. Example from a Fedora Linux system:

$ find /usr/include -name cstddef
/usr/include/c++/8/cstddef

If I compile your example with "gcc" on that system, I get the same
error. With "g++", is is fine. It automatically find the cstddef header
file in the /usr/include/c++/8 directory.

Hope this helps,

(and please do not top post as that makes a mail thread unreadable)

-- Bas.


> Regards,
> Evan
>

Hi Bas,

Apologies for top-posting previously.

using ${CC}, ${CPP} or ${CXX} all show the same error relating to not finding the required include

cstddef is available in the cross-compiler toolchain:
$ find . -name cstddef
./sysroots/armv7ahf-neon-linux-gnueabi/usr/include/c++/6.2.1/cstddef
./sysroots/armv7ahf-neon-linux-gnueabi/usr/include/boost/compatibility/cpp_c_headers/cstddef

and is also available on my system:
$ find /usr/include -name cstddef
/usr/include/c++/5/cstddef
/usr/include/c++/4.7/cstddef
/usr/include/c++/4.8/cstddef


${CC} --version && ${CPP} --version && ${CXX} --version
arm-linux-gnueabihf-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

arm-linux-gnueabihf-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

arm-linux-gnueabihf-g++ (Linaro GCC 6.2-2016.11) 6.2.1 20161016
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Regards,
Evan


More information about the yocto mailing list