Dear GSL bug followers,
Julius and I just had a session where we shared screens from Austria to New Mexico and figured it out. This might be interesting to others who cross-compile gsl, so I'll show you the final bit that was missing. After setting C_INCLUDE_PATH and other paths correctly, Julius was running this configure line: ./configure CC=/usr/local/gcc/bin/arm-none-eabi-gcc CXX=/usr/local/gcc/bin/arm-none-eabi-gcc LD=/usr/local/gcc/bin/arm-none-eabi-gcc AR=/usr/local/gcc/bin/arm-none-eabi-ar OBJCOPY=/usr/local/gcc/bin/arm-none-eabi-objcopy CFLAGS="-I/crosscompilearea/gsl-2.7.1/gsl -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=soft" CXXFLAGS="-mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=soft" LDFLAGS="-I/crosscompilearea/gsl-2.7.1/gsl --specs=nano.specs --specs=nosys.specs -mthumb -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=soft" C_INCLUDE_PATH=“/crosscompilearea/gsl-2.7.1/gsl" --target=arm-none-eabi --host=arm-none-eabi Notice how you specify the Makefile variables CC, CXX, LD, AR, OBJCOPY, CFLAGS. It turns out that you get *most* of the way there, but not all the way: the "ranlib" program also gets called in cross-compiling, and his computer's native ranlib was being called instead of the cross-compiling one for his target ARM architecture. Once he put: RANLIB=/usr/local/gcc/bin/arm-none-eabi-ranlib to that litany it worked.