[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cross building linux-image packages



On 11/01/2016 12:22 AM, Andrew Worsley wrote:
> I tried using pbuilder (based off
> https://jodal.no/2015/03/08/building-arm-debs-with-pbuilder/) but ->
> qemu-arm-static has bugs (segmentation faults - possibly
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811087

You can use (in your pbuilderrc)
PBUILDERSATISFYDEPENDSCMD="/usr/lib/pbuilder/pbuilder-satisfydepends-classic"
to make pbuilder use a different (much slower, and in edge cases
possibly problematic) dependency-resolution algorithm. In that
case aptitude will never be invoked and builds in qemu-user
chroots will mostly work - with possibly some exceptions. I've
never tried a kernel build in such a setup though.

Note that qemu-user chroots are _really_, _really_ slow. Builds
can take anywhere from 3 to 20 times as long as on native
hardware. (For other packages, in my experience building armhf
in qemu-user chroots on amd64 is ~12 times slower. YMMV.)

Note that if you are using qemu chroots, you're not actually
cross-compiling, but you are emulating a hardware architecture
and using a native compiler (on an emulated instruction set)
to build the software. This has the advantage that you're much
closer to what the build is going to be on real hardware, but
performance is going to be awful and bugs in qemu-user are
going to bite you.

Alternatively, you can actually cross-compile stuff by
employing a real cross compiler that runs natively on your
hardware (hence faster) but generates code for the target
hardware you're looking at. The build system of a package must
support cross compiling explicitly for this to work and be
useful, I've never tried the kernel packages, so I don't know
if that will work. You can get a pointer on how to actually
cross-compile Debian packages under:
https://wiki.debian.org/CrossCompiling

> But I see that buildd (
> https://buildd.debian.org/status/logs.php?pkg=linux&arch=armel )
> apparently works some how.

Well, the official Debian buildds for armhf/armel actually run on
ARM hardware, so that's why the "work". ;-)

Regards,
Christian


Reply to: