/usr/bin/ld: error: a.out uses VFP register arguments, /tmp/cceTTKgu.o does not

Richard Earnshaw Richard.Earnshaw@foss.arm.com
Mon Jun 28 13:48:57 GMT 2021



On 23/06/2021 07:06, Erik Bryer via Gcc-help wrote:
> Hi,
> 
> I'm trying to build gcc-5.5.0, but it fails at the configure step for
> intl with the error message:
> /usr/bin/ld: error: a.out uses VFP register arguments, /tmp/cceTTKgu.o does not
> Here is what I've done...
> 

GCC-5 is very old now and no-longer supported by the GCC developers.

> # lscpu
> Architecture:          armv7l
> Byte Order:            Little Endian
> CPU(s):                4
> On-line CPU(s) list:   0-3
> Thread(s) per core:    1
> Core(s) per socket:    4
> Socket(s):             1
> Model:                 3
> Model name:            ARMv7 Processor rev 3 (v7l)
> CPU max MHz:           1500.0000
> CPU min MHz:           600.0000
> BogoMIPS:              270.00
> Flags:                 half thumb fastmult vfp edsp neon vfpv3 tls
> vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
> 
> # gcc --version
> gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
> 
> # cd ; cd gcc5build ; rm -rf *
> 
> # export CFLAGS='-mfloat-abi=hard'
> # export CXXFLAGS='-mfloat-abi=hard'

This isn't going to work, as there are assembler files which will likely 
not see these flags.

Instead, use the --with-float=[soft|softfp|hard] option when configuring 
the compiler.

R.

> 
> # $PWD/../gcc-5.5.0/configure --prefix=/opt/gcc5 --enable-languages=c,c++
> 
> # make
> [...]
> checking for C compiler default output file name...
> configure: error: in `/root/gcc5build/intl':
> configure: error: C compiler cannot create executables
> See `config.log' for more details.
> make[2]: *** [configure-stage2-intl] Error 77
> make[2]: Leaving directory `/root/gcc5build'
> make[1]: *** [stage2-bubble] Error 2
> make[1]: Leaving directory `/root/gcc5build'
> make: *** [all] Error 2
> 
> # cat ./intl/config.log
> [...]
> configure:3000:  /root/gcc5build/./prev-gcc/xgcc
> -B/root/gcc5build/./prev-gcc/
> -B/opt/gcc5/armv7l-unknown-linux-gnueabihf/bin/
> -B/opt/gcc5/armv7l-unknown-linux-gnueabihf/bin/ -B/opt/gcc5/armv7
> l-unknown-linux-gnueabihf/lib/ -isystem
> /opt/gcc5/armv7l-unknown-linux-gnueabihf/include -isystem
> /opt/gcc5/armv7l-unknown-linux-gnueabihf/sys-include    -g -O2
> -gtoggle  -static-libstdc++ -static-libgcc  conftest.c  >&5
> /usr/bin/ld: error: a.out uses VFP register arguments, /tmp/cc8LUsFC.o does not
> /usr/bin/ld: failed to merge target specific data of file /tmp/cc8LUsFC.o
> collect2: error: ld returned 1 exit status
> configure:3004: $? = 1
> configure:3041: result:
> configure: failed program was:
> | /* confdefs.h */
> | #define PACKAGE_NAME ""
> | #define PACKAGE_TARNAME ""
> | #define PACKAGE_VERSION ""
> | #define PACKAGE_STRING ""
> | #define PACKAGE_BUGREPORT ""
> | #define PACKAGE_URL ""
> | /* end confdefs.h.  */
> |
> | int
> | main ()
> | {
> |
> |   ;
> |   return 0;
> | }
> configure:3047: error: in `/root/gcc5build/intl':
> configure:3051: error: C compiler cannot create executables
> See `config.log' for more details.
> 
> ## ---------------- ##
> ## Cache variables. ##
> ## ---------------- ##
> 
> ac_cv_env_CC_set=set
> ac_cv_env_CC_value=' /root/gcc5build/./prev-gcc/xgcc
> -B/root/gcc5build/./prev-gcc/
> -B/opt/gcc5/armv7l-unknown-linux-gnueabihf/bin/
> -B/opt/gcc5/armv7l-unknown-linux-gnueabihf/bin/
> -B/opt/gcc5/armv7l-unknown-linux-gnueabihf/lib/ -isystem
> /opt/gcc5/armv7l-unknown-linux-gnueabihf/include -isystem
> /opt/gcc5/armv7l-unknown-linux-gnueabihf/sys-include   '
> ac_cv_env_CFLAGS_set=set
> ac_cv_env_CFLAGS_value='-g -O2 -gtoggle'
> [...]
> 
> I googled and rechecked the install instructions and the FAQ. I have a
> suspicion this has something to do with my using - mfloat-abi=hard. I
> wonder if the fact that on the last line above av_cv_env_CFLAGS_value
> does not include - mfloat-abi=hard means anything. I also tried the
> compiler flags '-mfloat-abi=hard -march=armv7-a -mfpu=neon', but the
> same error resulted.
> 
> Thanks,
> Erik
> 


More information about the Gcc-help mailing list