The GNU Toolchain, is a combination of multiple projects: * GCC : GCC stands for "GNU Compiler Collection". GCC is an integrated distribution of compilers for several major programming languages. These languages currently include C, C++, Objective-C, Objective-C++, Java, Fortran, and Ada. Currently the Blackfin is supported by C, and C++. * Binutils : GNU Binutils are a collection of binary tools. The main ones are: the GNU linker (ld) and the GNU assembler (as). * Debugger : GNU debugger, allows you to see what is going on `inside’ another program while it executes -- or what another program was doing at the moment it crashed. Ronetix provides three Blackfin compilers: bfin-elf-gcc linked against gcc’s own newlib library. The bfin-elf-* toolchain should be used to build non-kernel and non-uClibc applications. bfin-uclinux-gcc linked against uClibc, which was built by the bfin-elf-* toolchain. Use this to build the kernel and kernel modules. Use this to build all userspace applications in the FLAT format. bfin-linux-uclibc-gcc linked against uClibc, which was built by the bfin-elf-* toolchain. Use this to build all userspace applications in the FDPIC ELF format. The first bfin-elf-gcc is optimized to produce stand alone (non-Linux) applications, like Das U-Boot. Although it boots the kernel it does not need to be relocated and does not need to use elf2flt to produce a Flat file for loading by the kernel. This version of the compiler is designed to be Operating System independent. The second bfin-uclinux-gcc has some features added to generate PIC (Program Independent Code) code without a GOT (Global Offset Table). This works better when working with elf2flt to produce user code executables. Only the bfin-uclinux-gcc can generate a Linux kernel or user land applications that run under Linux. When you build bfin-uclinux-gcc, it builds 2 copies of uClibc, one for flat executables, and one for ELF executables. The compiler is smart enough to know which one to include, depending on the output type, specified on the command line. The third bfin-linux-uclibc-gcc is designed purely for compiling userspace applications in the FDPIC ELF format. This format is useful for sharing the same executable code among applications at the price of slightly higher overhead at runtime. A must for people using many shared libraries and applications and wish to share resources.