Enabling multilib still does not allow us to have soft and hard float

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 ..









[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux