Thanks much for the pointers thus far. I am now trying to take this in three chunks: build native GCC11 on GNU/Linux, then use that to build GCC11 on/for GNU/Linux targeting ARM, then use the previous two to build GCC11 on GNU/Linux for Windows targeting ARM. The first step completes, so I have an installed GCC 11 native toolchain for Linux. The second step doesn't finish; getting hung up on configuring libstdc++. The tail of the build output leading up to the error: checking for ISO C99 support to TR1 in <stdint.h>... no checking for ISO C99 support to TR1 in <math.h>... no no no checking stdbool.h usability... no checking stdbool.h presence... yes configure: WARNING: stdbool.h: present but cannot be compiled configure: WARNING: stdbool.h: check for missing prerequisite headers? configure: WARNING: stdbool.h: see the Autoconf documentation configure: WARNING: stdbool.h: section "Present But Cannot Be Compiled" configure: WARNING: stdbool.h: proceeding with the compiler's result checking for stdbool.h... no checking stdalign.h usability... no checking stdalign.h presence... yes configure: WARNING: stdalign.h: present but cannot be compiled configure: WARNING: stdalign.h: check for missing prerequisite headers? configure: WARNING: stdalign.h: see the Autoconf documentation configure: WARNING: stdalign.h: section "Present But Cannot Be Compiled" configure: WARNING: stdalign.h: proceeding with the compiler's result checking for stdalign.h... no checking for the value of EOF... configure: error: computing EOF failed make[2]: *** [Makefile:13316: configure-target-libstdc++-v3] Error 1 make[2]: Leaving directory '/home/tsobczynski/Compiler/build-linux-cross' make[1]: *** [Makefile:968: all] Error 2 make[1]: Leaving directory '/home/tsobczynski/Compiler/build-linux-cross' The corresponding part of config.log for the library is: configure:16488: checking for the value of EOF configure:16494: /home/tsobczynski/Compiler/build-linux-cross/./gcc/xgcc -B/home/tsobczynski/Compiler/build-linux-cross/./gcc/ -B/home/tsobczynski/Compiler/linux-cross/arm-none-eabi/bin/ -B/home/tsobczynski/Compiler/linux-cross/arm-none-eabi/lib/ -isystem /home/tsobczynski/Compiler/linux-cross/arm-none-eabi/include -isystem /home/tsobczynski/Compiler/linux-cross/arm-none-eabi/sys-include -c -g -O2 -g -Os conftest.c >&5 conftest.c:14:10: fatal error: stdio.h: No such file or directory 14 | #include <stdio.h> | ^~~~~~~~~ compilation terminated. configure:16494: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "package-unused" | #define PACKAGE_TARNAME "libstdc++" | #define PACKAGE_VERSION "version-unused" | #define PACKAGE_STRING "package-unused version-unused" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define LT_OBJDIR ".libs/" | #define _GLIBCXX_HOSTED 0 | #define _GLIBCXX_VERBOSE 1 | #define _GLIBCXX_USE_LONG_LONG 1 | #define _GLIBCXX_FULLY_DYNAMIC_STRING 0 | /* end confdefs.h. */ | #include <stdio.h> | int | main () | { | static int test_array [1 - 2 * !((EOF) >= 0)]; | test_array [0] = 0; | return test_array [0]; | | ; | return 0; | } configure:16494: /home/tsobczynski/Compiler/build-linux-cross/./gcc/xgcc -B/home/tsobczynski/Compiler/build-linux-cross/./gcc/ -B/home/tsobczynski/Compiler/linux-cross/arm-none-eabi/bin/ -B/home/tsobczynski/Compiler/linux-cross/arm-none-eabi/lib/ -isystem /home/tsobczynski/Compiler/linux-cross/arm-none-eabi/include -isystem /home/tsobczynski/Compiler/linux-cross/arm-none-eabi/sys-include -c -g -O2 -g -Os conftest.c >&5 conftest.c:14:10: fatal error: stdio.h: No such file or directory 14 | #include <stdio.h> | ^~~~~~~~~ compilation terminated. configure:16494: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "package-unused" | #define PACKAGE_TARNAME "libstdc++" | #define PACKAGE_VERSION "version-unused" | #define PACKAGE_STRING "package-unused version-unused" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define LT_OBJDIR ".libs/" | #define _GLIBCXX_HOSTED 0 | #define _GLIBCXX_VERBOSE 1 | #define _GLIBCXX_USE_LONG_LONG 1 | #define _GLIBCXX_FULLY_DYNAMIC_STRING 0 | /* end confdefs.h. */ | #include <stdio.h> | int | main () | { | static int test_array [1 - 2 * !((EOF) < 0)]; | test_array [0] = 0; | return test_array [0]; | | ; | return 0; | } configure:16497: error: computing EOF failed The excerpted recipe I'm using to build the native/native/native toolchain: cd $(COMPILER_ROOT)/build-linux-native && $(COMPILER_ROOT)/gcc/configure --prefix=${LINUX_TOOLCHAIN_ROOT} --enable-vtable-verify --enable-languages=c,c++,lto --disable-multilib --disable-bootstrap --enable-large-address-aware $(LINUX_TOOLCHAIN_ROOT)/bin/gcc: $(COMPILER_ROOT)/build-linux-native/Makefile $(MAKE) -j8 -C $(COMPILER_ROOT)/build-linux-native $(MAKE) -C $(COMPILER_ROOT)/build-linux-native install The excerpted recipe for the native/native/cross toolchain: cd $(COMPILER_ROOT)/build-linux-cross && PATH="$(LINUX_TOOLCHAIN_ROOT)/bin:$(PATH)" $(COMPILER_ROOT)/gcc/configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=arm-none-eabi --prefix=${LINUX_CROSS_TOOLCHAIN_ROOT} --enable-vtable-verify --with-multilib-list=aprofile,rmprofile --enable-languages=c,c++,lto --enable-large-address-aware --disable-shared --with-newlib PATH="$(LINUX_TOOLCHAIN_ROOT)/bin:$(PATH)" $(MAKE) -j8 -C $(COMPILER_ROOT)/build-linux-cross PATH="$(LINUX_TOOLCHAIN_ROOT)/bin:$(PATH)" $(MAKE) -C $(COMPILER_ROOT)/build-linux-cross install The search paths the configure script is passing to the compiler do not contain 'stdio.h', but the native toolchain I'm using to compile (same GCC 11.2.x) does have it: $ find linux-cross -name 'stdio.h' $ find linux -name 'stdio.h' linux/include/c++/11.2.1/tr1/stdio.h linux/lib/gcc/x86_64-pc-linux-gnu/11.2.1/include/ssp/stdio.h I seemed to have the opposite problem earlier, where the GCC 9 native->ARM toolchain I installed was choking on headers from GCC 11 that it couldn't understand, which is why I built a native GCC 11 in the first place. Any thoughts on where I have gone wrong this time? Thanks, Tom