Dear All, I am trying to compile gcc.7.2 with option "--enable-multilib", so I can support both hard and soft float (email is followed by the codes). However, after finishing, using the command "-print-multi-lib" only the default (which is hard) is recognized. Consequently, when I compile my helloworld program with "--with-float=soft", I will face to "ARM compilation error, VFP registered used by executable, not object file" So, any ideas where I am going wrong? Your help is greatly appreciated. Best Fairy PREFIX=/opt/combinedToolChain SYSROOT=${PREFIX}/sysroot BUILD=/home/farzaneh/GCC7_2 KERNEL_SRC=/home/farzaneh/linux-4.13.4 export PATH=${PREFIX}/bin:$PATH rm -Rf ${PREFIX}/* mkdir -p ${PREFIX} mkdir -p ${SYSROOT} cd ${KERNEL_SRC} make ARCH=arm INSTALL_HDR_PATH=${SYSROOT} headers_install && find ${SYSROOT}/include \( -name .install -o -name ..install.cmd \) -delete cd ${BUILD} mkdir -p binutils-build cd binutils-build rm -Rf * # binutils is impossible to compile with --enable-shared and install in --prefix different from what it was compiled as path to shared libraries is hardcoded and absolute # so we are using PREFIX that results in incorrect search dir like SEARCH_DIR("=/opt/g7/arm-linux-gnueabi/lib"); that will be ignored sh ../binutils-2.28/configure --target=arm-linux-gnueabi --with-sysroot=${SYSROOT} --prefix=${PREFIX} --enable-threads=posix --disable-shared --disable-nls --enable-multilib --with-multilib-list=aprofile --enable-tls >> binutils.log make -s -j8 >> binutils.log make -s install >> binutils.log cd .. mkdir -p gcc-build cd gcc-build rm -Rf * ../gcc-7.2.0/configure --target=arm-linux-gnueabi --enable-languages=c,c++ --with-sysroot=${SYSROOT} --prefix=${PREFIX} --exec-prefix=${PREFIX} --libexecdir=${PREFIX}/lib --with-native-system-header-dir=/include --enable-shared --enable-threads=posix --disable-nls --enable-multilib --disable-bootstrap --enable-libstdcxx-time=yes --enable-__cxa_atexit --with-fpu=neon --with-float=hard --with-abi=aapcs-linux --with-cpu=cortex-a9 --enable-tls --with-system-zlib >> gcc.log make -j8 all-gcc >> gcc.log make -s install-gcc >> gcc.log cd .. mkdir -p glibc-build cd glibc-build rm -Rf * sh ../glibc-2.26/configure --with-sysroot=${SYSROOT} --prefix=/ --libexecdir=/lib --host=arm-linux-gnueabi --target=arm-linux-gnueabi --with-headers=${SYSROOT}/include --enable-shared --enable-tls --enable-libstdcxx-time=yes --enable-__cxa_atexit --enable-multilib --with-multilib-list=aprofile libc_cv_forced_unwind=yes >> glibc.log make install-bootstrap-headers=yes install_root=${SYSROOT} install-headers >> glibc.log # and startup files make -s -j8 csu/subdir_lib >> glibc.log mkdir -p ${SYSROOT}/lib install csu/crt1.o csu/crti.o csu/crtn.o ${SYSROOT}/lib >> glibc.log #install dummy libc.so and stubs.h that are replaced later arm-linux-gnueabi-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o ${SYSROOT}/lib/libc.so >> glibc.log touch ${SYSROOT}/include/gnu/stubs.h cd .. # make and install libgcc cd gcc-build make -s -j8 all-target-libgcc >> gcc.log make -s install-target-libgcc >> gcc.log cd .. #make and install glibc cd glibc-build make -s -j8 >> glibc.log make -s install_root=${SYSROOT} install >> glibc.log cd .. # finally make and install libstdc++ and headers cd gcc-build make -s -j8 >> gcc.log make -s install >> gcc.log cd ..