[Interest] Compiling for Pi Zero

Shawn Rutledge Shawn.Rutledge at qt.io
Mon Dec 5 15:17:22 CET 2016


> On 5 Dec 2016, at 14:32, Konstantin Tokarev <annulen at yandex.ru> wrote:
> 05.12.2016, 16:30, "Shawn Rutledge" <shawn.rutledge at qt.io>:
>>>  On 4 Dec 2016, at 18:17, Jason H <jhihn at gmx.com> wrote:
>>> 
>>>  I am trying a naive compile of Qt 5.7.0 (from source tarball) on a Pi zero (no cross compile) I've got all the dependencies installed and Jessie is up to date.
>>>  I keep running into GCC 4.9 compiler errors. Not that the Qt code is bad, but that the compiler bombs out saying it's a bug in GCC. Originally I saw it in qsvgcontext.cpp, but after updating and trying to fix it, I get it in sax/qxml.cpp.
>>> 
>>>  It doesn't give me a lot of idea on what exactly is wrong.
>>> 
>>>  Anyone have any tips?
>> 
>> I wouldn’t be surprised if it runs out of memory, but I guess you would see something about that in the error message. You could run top in another shell session and see if it gets close to running out.
> 
> GCC can print something like 
> 
>    internal compiler error: Killed (program cc1plus)
> 
> in case of OOM, so it can be confused with real ICE by newbie :)

Yep that’s what I was thinking of… even on my laptop with 4GB and no swap, if I run make -j with too high a number, that happens sometimes (but I didn’t have the exact error message handy).  And forget about running Creator at the same time.

Newer compilers take more memory, and especially the linker.  At some point it becomes impractical to compile anything significant on an embedded processor at all, just for this reason, even if you don’t mind it taking all day, or even if you have a cluster of machines available.  I think the gcc folks should try to figure out some kind of workaround: maybe detect that there is not enough memory and make the usual speed-memory tradeoff in the other direction (cache less and compute more); work on building a distributed linker (if that’s even possible?) so that you can use a cluster of little machines; etc.  (But at least maybe omitting -O would help.)  Aren’t the Debian folks demanding such things, if they continue to build the arm distro on arm-based machines?

But most people will say stop doing that and just cross-compile it.  But then we paint ourselves into a corner if that’s the only solution.  My first Linux box was a 386 with 5 or 6 megs of RAM (1+4 I think), and it didn’t have any trouble building a kernel for itself.  (I don’t think I was building Qt that far back, but it was probably small enough to run on that machine.)



More information about the Interest mailing list