[lfs-support] Cross-compiling in Ch6
paulgrogers at fastmail.fm
Sat Sep 2 23:09:15 PDT 2017
> On 09/01/2017 11:04 AM, Paul Rogers wrote:
> > Being able to use my (now old) i7 to build (B)LFS has made this much
> > faster, but seems to have tripped me up. I was trying to build an i686
> > LFS, and thought it was enough to use an older i686-made OS and
> > toolchain. Works on Conroe targets, but when I actually tried a
> > Pentium-3 the kernel panicked, and when trying to rebuild the kernel
> > with a chroot from a real i686 OS and toolchain, make kept segfaulting.
> > In spite of my package management wrappers, I always have followed the
> > book closely, but the book presumes one will run on the same system, not
> > a lower-grade member of the family. I'm guessing I'll need to use
> > --host=i686-pc-linux-gnu throughout Ch6, and perhaps even a similar
> > --target for binutils, GMP, MPFR, MPC, & gcc? Is that right?
> Used to be able to do various uname hacks to get around it. If kernel is
> a real i686 kernel, something really simple like this:
> mv /bin/uname /bin/uname.orig
> cat > /bin/uname << "EOF"
> # Begin /bin/uname
> /bin/uname.orig $@ | sed 's at x86_64@i686 at g'
> # End /bin/uname
> chmod 755 /bin/uname
> But with that said, I've no idea whether it will actually work. It used
> to. Also would probably want to use march and mtune flags and probably
> need to use config.fsf for gmp or explicitly set the target for that one.
OK, to clarify the above, I was _trying_ to make the "POD-6.1"/LFS-7.7
on the i7 for i686 by using a real i686 host "POD-4.1"/LFS-7.2. uname
-a says I have an i686 kernel. The "triplet" is i686-pc-linux-gnu. But
as I was following the book too closely, without --host & --target, [GMP
let] some i7 instructions apparently crept into binutils and gcc, and
the triplet isn't quite true. I guess what I got from Ch5 then was an
i686 to i7 cross-compiler? The system *seems* to work.
Ahh, I see, I think. I need to make the i686 compiler in Ch5. And go
back to hosting on POD-4.1/LFS-7.2 where --host is really what it
claims. But I'm still trying to avoid doing all the work of the whole
CLFS cross-build. AIUI I'll have i686 host and target, but just have to
tell binutils and gcc, "No, you can't use everything you can see!" in
(Reminding me a bit of when I needed to run second-level VMs on IBM's
VM/SP4 in the mid 80's. (On a dual-processor 14.7MHz 8MB 4381. How
times have changed!) Confusing for a while, but finally it
"clicked-in". I'm still in the confused stage now.)
paulgrogers at fastmail.fm
Rogers' Second Law: "Everything you do communicates."
(I do not personally endorse any additions after this line. TANSTAAFL
More information about the lfs-support