[yocto] Forcing GCC version for native compilation

Teemu K maillinglists18 at gmail.com
Thu Nov 22 23:49:42 PST 2018


On Thu, Nov 22, 2018 at 12:32 PM Burton, Ross <ross.burton at intel.com> wrote:
>
> On Thu, 22 Nov 2018 at 07:33, Teemu K <maillinglists18 at gmail.com> wrote:
> > I have project made for Yocto 1.7, but I'd like to compile it on newer
> > Linux distribution that default GCC version is 5.x. GCC version itself
> > causes some problems, because some things have changed.
> >
> > There is also GCC 4.8 available, but it's not called 'gcc', but 'gcc-4.8'.
> >
> > The question is that is there way to force yocto use 'gcc-4.8' instead
> > of 'gcc'? I did some searching and couldn't find any options how to do
> > it. I tried to making link to ~/bin/gcc pointing gcc-4.8 and having
> > that first in PATH, but that didn't quite work. I'm guessing path got
> > re-set at some point.
> >
> > And before someone says. Updating Yocto to solve problem is not
> > solution. System is being updated, but current system still needs to
> > be able to compile.
>
> The modern solution is to set BUILD_CC and so on, see bitbake.conf.
>
> Note that in such an old release this might not work as well as you'd
> hope because I don't think it was fully tested.  In which case your
> options in preferred order:
> 1) Some distributions let you change what the default compiler, for
> example /usr/bin/gcc might be a symbolic link you can just change.
> 2) PATH fiddling as you did.  You'll most likely need to replace more
> than just gcc, for example cpp.
> 3) Just mv /usr/bin/gcc to /usr/bin/gcc-5 (and cpp, and anything
> else), and symlink gcc -> gcc-4.8
>
> Ross
1) There is BUILD_CC also in this version of Yocto. Doesn't seem to do
anything. I modified poky/meta/conf/bitbake.conf for testing purposes
to have BUILD_CC pointing those 4.8 versions yet the sources are
compiled with 'gcc' not 'gcc-4.8' so either something else overrides
those settings and/or source packages ignore that setting.

2) I also tried making links go gcc/g++/cpp and adding them to PATH
first. This seemed to work, bit better, but now compilation failed to
this:
 /usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a when searching for -lgcc

Which is interesting since I can use the gcc-4.8 just fine manually
and it creates working binary.

3) /usr/bin/gcc is actually link to gcc-5, but I don't want to change
that because then it would be system wide change and I want to avoid
that.

I'll dig bit deeper why the second option didn't work. Any other
suggestions are welcome as well.

-Teemu


More information about the yocto mailing list