Cross compiling.

Amar Takhar verm at
Fri Feb 12 19:11:15 UTC 2016

On 2016-02-12 11:02 -0800, Hal Murray wrote:

> I think there are two things I'm looking for.  One is the concepts.  The 
> other is the details.  Text that I can cut/paste cover the details.  It 
> probably takes a sentence or two to explain the concept.
> It can be as simple as "Install the compiler" to decode things like 
> "gcc-arm-linux-gnu".  But is it really just the compiler or does that package 
> also include other tools?  It may take a bit of background info on the target 
> environment to set things up.
> If you have an example worked out for Ubuntu, I can probably find the 
> corresponding packages on other distros/OSes.  That's assuming that I'll have 
> to go through the same steps but some of the names have changed.  In the 
> simple case, somebody could cover another distro/OS by adding a set of 
> cut-paste steps.

Cross compiling isn't that easy.  It's a moving target and every operating 
system does it in a very different way.  Some are for embedded boards, others 
only partially carry over what's needed.

This one on Ubuntu is the only one I've used that has worked out of the box 
flawlessly for binaries I've never actually experienced that before on any OS I 
was surprised.

I don't want to go down the road of having to maintain this sort of 
documentation it will be a huge burden.  Anyone who is wanting to cross compile 
will already know what they're doing...or should.

> >   waf configure --cross-compiler=arm-linux-gnueabihf-gcc
> Where do the header files and libraries come from?

This is beyond our scope.  We can't explain how to setup a cross compiling 
environment to our users.  There are thousands of documents out there that do 
just that.

All we need to document is how to cross compile waf in your environment.

> What does "waf install" do?

Same as any install you tell it the prefix and install it there is nothing 
special about it.

> > It built fine.  No OpenSSL or libevent2.  I built those later using the same
> >  compiler and it all worked as expected.
> What did you do to get OpenSSL or libevent2?

Same as you would on any operating system.  This is up top the user to figure 

> > OK.. if anyone has any suggestions where the docs should go I can write
> > something. 
> devel/HOWTO-cross

I would literally put this into that document:

  Setup a cross compile environment for your architecture.

  Run waf configure with --enable-cross=/path/to/your/cross/cc

  There are also --cross-cflags and --cross-ldflags to supply the cross compiler 
  with appropriate values.

  You may need to install dependencies in order to get a full build.


More information about the devel mailing list