Hi Fairy, Just have a look at https://gcc.gnu.org/install/configure.html. The interesting options are: -- disable-multilib ... arm-*-* fpu, 26bit, underscore, interwork, biendian, nofmult. Thus, it looks like for arm, soft float is _not_ part of a standard multilib build. --with-multilib-list=list ... arm*-*-* list is a comma separated list of aprofile and rmprofile to build multilibs ... You may most likely want to explicitly use rmprofile to support both hard and soft float. While you should be fine with this if you just need a bare-metal compiler, things start to get messy if you need to build for a specific OS, e.g. for Linux: The only multilib build I had success with was an x86 multilib build for a glibc based Linux with --with-multilib-list=m64, m32, mx32. For arm though, even Linaro does not seem to offer multilib builds fot Linux supporting any combination of hard and soft float, which took me to the conclusion that this may still not work. Cheers, Chris -----Ursprüngliche Nachricht----- Von: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx] Im Auftrag von Farzaneh Shalbaf Gesendet: Dienstag, 3. Oktober 2017 06:47 An: gcc-help@xxxxxxxxxxx Betreff: Enabling multilib still does not allow us to have soft and hard float 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 ..