Playing with cross-compile toolsets


I have been playing with cross-compile toolchain creators. I have found most of them to be broken.

Crosstool-NG and OpenADK for example. They seem nice from the descriptions, pity they don't work.
OpenADK for example, real nice Kconfig interface. I made very generic choices of packages, architecture, etc. Compile started and failed early-on, I think it was package binutils. So I reran Kconfig, chose and earlier version of binutils than the default, this time it compiled, but glibc failed. Flakey.

I suspect many of these tools have been used for many years for i686 target, and are still not comfortable with x86_64.

Right now I am testing OpenEmbedded. Just doing the default "core-image-minimal" build, for i586 target. I won't rock the boat yet with a x86_64 target, see if the i586 build completes first.

OpenEmbedded, which is used by the Yocto project, looks quite sound, though a bit complicated. I become wary when I see a lot of complication, layers of whatever, when all I really want to do is compile a set of packages, something that a small script could do.

OpenEmbedded home:
http://www.openembedded.org/wiki/Main_Page
Yocto Project home:
https://www.yoctoproject.org/


Comments:

Buildroot   Posted on 6 Jun 2016, 14:42 by admin
To round-out my evaluation of these tools, I am doing a compile of a small selection of packages in Buildroot.

Buildroot home:
https://buildroot.org/

I have looked at Buildroot a few times over the years. It doesn't really suit me, as it doesn't create a target filesystem that can be compiled-in, it is purely end-user. Nor does it create individual binary packages, just one image of the whole target filesystem.

It uses Kconfig, which is very nice to use, but as with my experience with OpenADK, my previous experiences with Buildroot were not so good -- it was a matter of choosing the right packages, architecture, options, that would give a successful compile.

This time, I am just creating a very basic filesystem. Just want to see it do it's thing, though not intending to use it past this point.
I chose the latest binutils, glibc, gcc, etc, wanted to see if it can handle that. So far, so good.
Actually, it is building a neat little host toolchain, could be useful elsewhere.


OpenEmbedded 64-bit success   Posted on 6 Jun 2016, 0:27 by admin
The x86_64 build succeeded, and I was able to chroot into the image file.

Looking at the recipes for packages in OpenEmbedded, I notice that there isn't much in the way of applications.
It is more a tool for creating a root filesystem, that you can boot up, then compile applications.


Bitbake, setting # cores   Posted on 5 Jun 2016, 21:27 by admin
Ah, variables BB_NUMBER_THREADS and PARALLEL_MAKE can be set here:
meta/conf/bitbake.conf

And the two variables are explained here:
http://patchwork.openembedded.org/patch/76467/


i586 OpenEmbedded success   Posted on 5 Jun 2016, 20:51 by admin
The i586 core-image-minimal succeeded. It did fail once, turned out my host systems needs the "shutdown" group. Created that, and it continued compiling until the end.

It created a ext4 image, 8918K in size. I presume that I could mount that and chroot into it.

But didn't, have immediately stated a x86_64 build. That was just a matter of editing build/conf/local.conf, then rerun "bitbake core-image-minimal".

Note, getting going with OpenEmbedded was a piece of cake, just followed the simple steps here:
http://www.openembedded.org/wiki/OE-Core_Standalone_Setup

I had to edit file (comment out two lines) in oe-core/meta/classes/sanity.bbclass, to allow me to do the build while running as root.

Right now, the x86_64 build is racing ahead. It is using 4 cores, would prefer to find out where I can, if I can, reduce that, as my laptop runs too hot on when compile on all 4 cores.