Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Oct 2017 08:22:37 +0200
From:      Tarjei Jensen <tarjei99@gmail.com>
To:        Mark Millard <markmi@dsl-only.net>
Cc:        FreeBSD Ports <freebsd-ports@freebsd.org>
Subject:   Re: Cross compiling GCC for aarch64
Message-ID:  <CAGxNqfAe4W=T3GQTS8st9FrcFS%2BMM8_WeXpZzC3zaah=9D-nwQ@mail.gmail.com>
In-Reply-To: <0E044060-82AF-4CCA-953C-3616E76B33C3@dsl-only.net>
References:  <0E044060-82AF-4CCA-953C-3616E76B33C3@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Oct 9, 2017 at 11:26 PM, Mark Millard <markmi@dsl-only.net> wrote:

> Tarjei Jensen tarjei99 at gmail.com wrote on
> Mon Oct 9 17:16:41 UTC 2017 :
>
> > This does NOT concern making a cross compiler. It is about cross
> compiling
> > gcc from ports so that it will work on aarch64 FreeBSD 12-CURRENT.
> >
> > I have managed to create my own ports which allow me to use gcc6 as a
> cross
> > compiler on x86 Freebsd 11.1 with aarch64 FreeBSD 12-CURRENT being the
> > target. It seems to work fine.
> >
> > The problem is that I want the GNU Ada compiler (gnat). It requires a
> > working Ada compiler to compile parts of the compiler. There is a
> gcc6-aux
> > pkg and port which uses v11 binaries. However it does *not* work on
> FreeBSD
> > 12. It can compile, but the resulting executables does not work. And the
> > gdb skills needed to find out why is simply beyond me.
> >
> > As I understand, what I am attempting is called a Canadian Cross.
> >
> > My plan would be to use the ports system to do this. e.g. by doing a
> "make
> > build". Create a tarball of the result and unpack on the target system
> and
> > do a "make install". Or make a pkg. Whatever works.
> >
> > I seem to have found the parameters to use for running the configure
> > script, but I would very much like to use the ports way.
> >
> > Can anybody explain or point to an article which explains how to use the
> > Canadian Cross to cross compile gcc?
> >
> > Suggestions and pointers to documentation are very much appreciated.
>
>
> I had trouble following this. I had to look up
> "Canadian Cross", which I found in:
>
> https://en.wikipedia.org/wiki/Cross_compiler
>
> Canadian Cross has 3 "machines": A, B, and C.
>
> (A) is used to bootstrap a compiler/toolchain
>     to run native on (B). (This can have multiple
>     stages, including a cross compile stage.)
>
> (B) is used to bootstrap a cross compiler/toolchain
>     to run on (B) to produce materials for (C).
>
> (C) runs the output from (B)'s cross compiler
>     but normally does not have its own self-hosted
>     compiler/toolchain or any cross compilers.
>
> If I read what you wrote correctly you are looking
> more for (B) and (C) not being distinct.
>
> Or am I wrong and you want(?):
>
> (A) to be a amd64 (i386?) FreeBSD 11.1 context
>
> (B) to be amd64(?) FreeBSD 12 for
>     cross compiling to aarch64 FreeBSD 12
>     and used to produce an aarch64 compiler
>     for use on aarch64 FreeBSD 12
>
> (C) to be aarch64 FreeBSD 12 having its own
>     compiler for targeting itself [copied from
>     (B)].
>
> ?
>
> ===
> Mark Millard
> markmi at dsl-only.net
>
>
>From the first paragraph :
 It is about cross compiling gcc from ports so that it will work on aarch64
FreeBSD 12-CURRENT.

I have a working cross compiler.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGxNqfAe4W=T3GQTS8st9FrcFS%2BMM8_WeXpZzC3zaah=9D-nwQ>