Re: [HEADS UP] ar(1) front-end committed. (notes for cross compile)

From: Kai Wang <kaiwang27_at_gmail.com>
Date: Thu, 21 Feb 2008 15:02:47 +0100
On Thu, Feb 21, 2008 at 02:12:09PM +0100, Kai Wang wrote:
> Hello list,
> 
> I just committed ar(1) front-end. Note that you NEED update your
> world before you can successfully perform cross platform buildworld.
> 
> You can update your system by:
> make buildworld
> ...
> make installworld
> 
> or you can just install ar(1) by hand.
> (replace /usr/bin/ar and /usr/bin/ranlib by hand)
> 
> This is needed because GNU Binutils ar and ranlib gets renamed to gar
> and granlib, and when you perform a cross platform buildworld, the
> build system will instead use /usr/bin/ar and /usr/bin/ranlib, which
> is not capable of cross build.

I think it's neccessary to explain it a bit.  When you start
cross-platform world build, the toolchain targarting that platform
will be built first. Then the resulting cross-platform toolchain is
used to build the world for that platform. ar(1) and ranlib(1) are
part of the toolchain.

After I renamed them to gar and granlib, the build system can no
longer find them, as a result it will use default ones, i.e.,
/usr/bin/ar and /usr/bin/ranlib, which target your current platform
and thus can not be used to cross build.

You can solve this problem by updating your own world first, or by 
replacing '/usr/bin/ar' and '/usr/bin/ranlib' with 'BSD' ar and ranlib
by hand. 'BSD' ar is platform independent and handles all the ELF
targets thus can be used directly (no need to recompile itself for
target platform) by the build system.

Best Regards,
Kai
Received on Thu Feb 21 2008 - 12:41:12 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:27 UTC