On Mon, May 26, 2014 at 12:46 PM, sven falempin <[email protected]>wrote:

> documentation about this are ... sparse
>

Intentionally.  As far as the project is concerned, cross-compiling is for
bringing up a new platform, and that's about it.



> # GENERIC.MP#315 amd64
> TARGET_ARCH=i386
> TARGET_CPU=geode
> TARGET=i386
> # vi ./Makefile.cross
> # make -f ./Makefile.cross cross-distrib
> host and target have different size longs
>
> But gcc is able to target 32bit cpu from 64bit , so why this restriction ?
> Apparently the makefile even build the libc and everything so ...
>

We experienced real cases where building when target and host had different
sizes resulted in bad code and lots of time wasted trying to figure out
what was wrong in the code, when the compiler was the problem.  Since there
are fast archs for both 32 and 64, simply banning the mismatch was a way to
guarantee a known safe setup and stop developers from wasting time on
something gcc didn't support.

To put it another way: let's say you disable that check and it all *almost*
works; if that build's problems resulted in other people wasting time
trying to figure out what went wrong, it would be a Very Bad Thing.


I tried it because
>  * qemu not so fast (still runing in background)
>  * my i386 target very slow (and only 128mo ram)
>  * do not want to install x86 on the build machine , currently thinking
> about dual boot
> x86/amd64 , i wonder if the amd64 boot could load a 32bit kernel... that
> would save the Active partition disk trick or the grub use.
>

The i386 and amd64 boot blocks can load both types of kernel.  I used to do
that until I accidentally toasted the second disk's install and switched to
building i386 on my old T60.


Philip Guenther

Reply via email to