The basics ...
As is discussed in Chapter 4 of Building Embedded Linux Systems,
building a functional GNU cross-development toolchain requires knowing a
working toolchain components version combination for a given host and
target. To help in doing so, the book includes table 4-2, which provides
a few of these combinations. Because, as the book states, table 4-2 is
far from complete, I am providing an up-to-date version of that table
below.
If you have found a working toolchain combination which isn't listed
here, feel free to post this version combination and any related
instructions on the mailing list. This table will
be updated following the suggestions and feedback on the list. Please keep
in mind the following when posting new version combinations:
- Don't send any version combinations to me (Karim) personally. This is
counter-productive and will very likely result in your submission to be
ignored. All version combination submissions should be made to the
mailing list.
- Clearly mark such submissions by prepending your mail's title with the
[GNU-VERS] tag.
- Do not post any but the most trivial patches to the list. No patches
will be hosted on embeddedTUX.org. Find an alternative repository and
provide a pointer to the mailing list.
- Be as explicit as possible regarding your setup and clearly outline
any steps you have followed which differ from those explained in the
book. This will help others in making the best from the information you
provide.
Known functional package version combinations| Host | Target | Kernel | binutils | gcc | glibc | Patches | | i386 | PPC | | 2.10.1 | 2.95.3 | 2.2.1 | 4 | | i386 | PPC | | 2.11.2 | 2.95.3 | 2.2.1 | 4 | | PPC | i386 | | 2.10.1 | 2.95.3 | 2.2.3 | None | | PPC | i386 | | 2.13.2.1 | 3.2.1 | 2.3.1 | None | | i386 | ARM | 2.4.1-rmk1 | 2.10.1 | 2.95.3 | 2.1.3 | 1 | | i386 | ARM-eb | 2.4.17 | 2.12.1 | 2.95.3 | 2.2.2 | 6 | | PPC | ARM | | 2.10.1 | 2.95.3 | 2.2.3 | 1 | | i386 | MIPS | | 2.8.1 | egcs-1.1.2 | 2.0.6 | 2 | | i386 | MIPS-el | | 2.14 | 3.2.1 | 2.3.1 | 5 | | i386 | SuperH | | 2.11.2 | 3.0.1 | 2.2.4 | 3 | | Sparc(Solaris) | PPC | 2.4.0 | 2.10.1 | 2.95.2 | 2.1.3 | None |
[1] See the "The -Dinihibit_libc hack" subsection in the "Building the Toolchain" section of
"The GNU toolchain" chapter in AlephOne's
"Guide to ARMLinux for
Developers" for further information on the modifications to be made to gcc to make it
build successfully.
[2] See Ralf Bächle's MIPS HOWTO for
further information on the patches to apply.
[3] See Bill Gatliff's
Running Linux on the Sega
Dreamcast for further information on the patches to apply.
[4] See Karim Yaghmour's explanation about building a proper toolchain for MPC860
PPC CPUs here.
[5] You must apply these two patches from Dan Kegel's
crosstool script:
- glibc-2.2.5-mips-clone-local-label.patch
- glibc-2.3.2-mips.patch
[6] See Dave Hylands' patches for building the cross-toolchain for a big-endian armv4b
here.
Resources
While attempting to find new working toolchain version combinations
you may find the following resources useful (in addition to those
already listed in the book):
- Dan Kegel's crosstool
patches:
While reliance on an automated cross-toolchain build scripts can come
back to haunt you, Dan's work on a best-of-breed
script has brought with
it a sizeable advantage, a substantial collection of patches for GNU
toolchain components. Ideally no such patches should be required. In
reality, however, the GNU toolchain components often times require some
slight changes in order to build properly and generate functional
binaries.
|