Crosstool-NG 1.17.0 is out

Crosstool-NGVersion 1.17.0 of Crosstool-NG has been released by its maintainer, Yann E. Morin.

For those not aware of what Crosstool-NG is, it is certainly the most up-to-date and useful tool to build cross-compilation toolchains. It provides a menuconfig interface (similar to the one used in the Linux kernel) to define the various parameters of the cross-compilation toolchain you intend to build (architecture, C library to use, versions of the C library, gcc, gdb, and many more configurable items), and then will automatically fetch, extract, patch, configure, build and install all the different elements of a toolchain into a working cross-compilation toolchain.

Internally, Crosstool-NG is essentially a set of shell scripts that automate the building process, and also a number of patches that gets applied to the different toolchain components in order to fix known issues.

The toolchains produced by Crosstool-NG are relocatable (you can install them wherever you want), and can be used directly, or integrated into a embedded Linux build system. A good sign of Crosstool-NG quality and popularity is the fact that Linaro has been using it since quite some time to generate its ARM, and more recently AArch64 toolchains.

This last Crosstool-NG release brings a number of interesting things:

  • Update of many components: add support for Linaro GCC 2012.08, 2012.09, 2012.10, Linaro GDB 2012.09, official GCC 4.7.2, and Newlib 1.20.0.
  • Many fixes to gcc, binutils, eglibc, backported from upstream, particularly thanks to Florian Fainelli from the OpenWRT project.
  • Support for the Microblaze architecture. Interestingly, this support, and a number of other changes, have been contributed by David Holsgrove who works for Xilinx, the company designing the Microblaze architecture.
  • Better support for the m68k architecture, especially through the addition of a known-working m68k-unknown-uclinux-uclibc sample. These have been contributed by Esben Haabendal, from Prevas, and who also maintains the OE-Lite embedded Linux build system.
  • Custom location infrastructure. Contributed by David Holsgrove, this mechanism allows to tell Crosstool-NG to use locally-stored source trees for the compilation of gcc, gdb, binutils, elf2flt or newlib. This makes Crosstool-NG more convenient for people doing active development (and therefore source code modification) on the toolchain components.

In his release e-mail, Yann also notes:

To be noted, the samples now account for a much lower percentage of the changes. This, thanks to the switch to using defconfigs for samples, instead of full config files.

Also, I’m now using pathwork to manage the patches that are sent to the list. For those interested, I’ll detail my new workflow in a separate message (as a reply to this one). Globally, I’m very happy to be using patchwork, it has made things a bit easier to manage! :-)

3 comments

  1. khaled says:

    Hi!
    Im implimanting the new crosstool but i found some problems when building the tools
    there is the error
    and thanks for help
    [ERROR] /home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/src/ppl-0.10.2/src/Interval.defs.hh:451:86: error: ‘f_info’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
    [ALL ] In file included from /home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/src/ppl-0.10.2/src/Interval.defs.hh:980:0,
    [ALL ] from /home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/src/ppl-0.10.2/src/Rational_Interval.hh:26,
    [ALL ] from /home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/src/ppl-0.10.2/src/Rational_Box.hh:26,
    [ALL ] from /home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/src/ppl-0.10.2/src/Polyhedron_widenings.cc:28:
    [ALL ] /home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/src/ppl-0.10.2/src/Interval.inlines.hh:113:1: note: ‘template typename Parma_Polyhedra_Library::Enable_If<Parma_Polyhedra_Library::Is_Singleton::value, Parma_Polyhedra_Library::Interval_Restriction_None<Parma_Polyhedra_Library::Interval_Info_Null_Open > >::type Parma_Polyhedra_Library::Interval_NS::f_info(const T&, bool)’ declared here, later in the translation unit
    [ERROR] make[4]: *** [Polyhedron_widenings.lo] Error 1
    [ALL ] make[4]: *** Waiting for unfinished jobs….
    [ALL ] mv -f .deps/C_Polyhedron.Tpo .deps/C_Polyhedron.Plo
    [ALL ] mv -f .deps/Polyhedron_public.Tpo .deps/Polyhedron_public.Plo
    [ALL ] make[4]: Leaving directory `/home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/arm-unknown-linux-uclibcgnueabi/build/build-ppl-host-i686-build_pc-linux-gnu/src’
    [ERROR] make[3]: *** [all] Error 2
    [ALL ] make[3]: Leaving directory `/home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/arm-unknown-linux-uclibcgnueabi/build/build-ppl-host-i686-build_pc-linux-gnu/src’
    [ERROR] make[2]: *** [all-recursive] Error 1
    [ALL ] make[2]: Leaving directory `/home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/arm-unknown-linux-uclibcgnueabi/build/build-ppl-host-i686-build_pc-linux-gnu’
    [ERROR] make[1]: *** [all] Error 2
    [ALL ] make[1]: Leaving directory `/home/user/felabs/sysdev/toolchain/crosstool-ng-1.17.0/.build/arm-unknown-linux-uclibcgnueabi/build/build-ppl-host-i686-build_pc-linux-gnu’
    [ERROR]
    [ERROR] >>
    [ERROR] >> Build failed in step ‘Installing PPL for host’
    [ERROR] >> called in step ‘(top-level)’
    [ERROR] >>
    [ERROR] >> Error happened in: CT_DoExecLog[scripts/functions@258]
    [ERROR] >> called from: do_ppl_backend[scripts/build/companion_libs/ppl.sh@105]
    [ERROR] >> called from: do_ppl_for_host[scripts/build/companion_libs/ppl.sh@59]
    [ERROR] >> called from: main[scripts/crosstool-NG.sh@609]
    [ERROR] >>
    [ERROR] >> For more info on this error, look at the file: ‘build.log’
    [ERROR] >> There is a list of known issues, some with workarounds, in:
    [ERROR] >> ‘docs/B – Known issues.txt’
    [ERROR]
    [ERROR] (elapsed: 98:22.05)

    • Thomas Petazzoni says:

      Hello Khaled,

      Thanks for reporting this issue. Could you post a mail on the Crosstool-NG mailing list with this problem, including your .config file? The mailing list is the best place to get support about Crosstool-NG.

      Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>