I'm looking for the best way to compile the toolchain from scratch with recent versions of binutils (2.18), gcc/g++ (4.2.2), and newlib (20080125_cvs_import). Target is arm-elf which I use on bare metal. What I have works great but I have to compile g++ separately and disable libssp (see below) I compile g++ separately because it goes looking for sys/types.h during the build and can't find it if gcc and newlib aren't compiled and installed first. Is that normal? I still have to disable libssp in the gcc/g++ build because I get configure warnings and then compiler errors. I reported it a while ago on the gcc list and in a PR. If it hasn't been fixed, then I'll keep working the way I am. Libssp warnings from configure: checking limits.h usability... no checking limits.h presence... yes configure: WARNING: limits.h: present but cannot be compiled configure: WARNING: limits.h: check for missing prerequisite headers? configure: WARNING: limits.h: see the Autoconf documentation configure: WARNING: limits.h: section "Present But Cannot Be Compiled" configure: WARNING: limits.h: proceeding with the preprocessor's result configure: WARNING: limits.h: in the future, the compiler will take precedence configure: WARNING: ## --------------------------------- ## configure: WARNING: ## Report this to the libssp lists. ## configure: WARNING: ## --------------------------------- ## checking for limits.h... yes Here's how I currently do it Makefile style.... --snip-- all: cross-binutils cross-gcc cross-g++ cross-newlib # awful hack using cp in binutils b/c the bfd/docs will not build outside their tree cross-binutils: mkdir -p build/binutils && cd build/binutils && \ mkdir -p bfd/doc && cp ../../binutils/bfd/doc/* bfd/doc/ && \ (./config.status || ../../binutils/configure --prefix=$(PREFIX) --target=$(TARGET)) && \ $(MAKE) -j$(PROCS)&& \ $(MAKE) install cross-gcc: cross-binutils mkdir -p build/gcc && cd build/gcc && \ (./config.status || ../../gcc/configure --prefix=$(PREFIX) --target=$(TARGET) --enable-languages="c" --with-gnu-ld --with-gnu-as --with-newlib --disable-libssp) && \ $(MAKE) && \ $(MAKE) install cross-g++: cross-binutils cross-gcc cross-newlib mkdir -p build/g++ && cd build/g++ && \ (./config.status || ../../gcc/configure --prefix=$(PREFIX) --target=$(TARGET) --enable-languages="c++" --with-gnu-ld --with-gnu-as --with-newlib --disable-libssp) && \ $(MAKE) && \ $(MAKE) install cross-newlib: cross-binutils cross-gcc mkdir -p build/newlib && cd build/newlib && \ (./config.status || ../../newlib/configure --prefix=$(PREFIX) --target=$(TARGET)) && \ $(MAKE) -j$(PROCS) && \ $(MAKE) install -- snip-- Thanks for any input! --Rob