Problem compiling for other platform

Brian Ipsen brian.ipsen@ryesgade47c.dk
Wed Aug 10 05:18:00 GMT 2011


Ian Lance Taylor <iant@google.com> writes:

>> /tmp/ccrc3fSw.s: Assembler messages:
>> /tmp/ccrc3fSw.s:37: Error: suffix or operands invalid for `push'
>> /tmp/ccrc3fSw.s:50: Error: suffix or operands invalid for `call'
>> /tmp/ccrc3fSw.s:76: Error: suffix or operands invalid for `push'
>> /tmp/ccrc3fSw.s:82: Error: suffix or operands invalid for `pop'
>> /tmp/ccrc3fSw.s:101: Error: suffix or operands invalid for `call'
>> /tmp/ccrc3fSw.s:104: Error: suffix or operands invalid for `pop'
>
>You are using a compiler generating 32-bit code with an assembler that defaults to expecting 64-bit code.  You need to use an assembler which defaults to 32-bit mode, or tell your compiler to pass -32 to the assembler.

Well - the question is then whether the xgcc command uses the AS specified assembler (/usr/local/i686-linux-gnu/bin/i686-linux-gnu-as)  - or the default assembler on the system (GNU assembler version 2.20.51.0.2 (x86_64-redhat-linux) using BFD version version 2.20.51.0.2-5.11.el6 20091009).

Is there a way to make sure, that the one in /usr/local/i686-linux-gnu/bin/i686-linux-gnu-as will be used?

I have tried to build for x86_64 instead, but in this case the make fails with:

stage1/xgcc -Bstage1/ -B/usr/x86_64-redhat-linux/bin/ -DIN_GCC    -O2 -g -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long  -DHAVE_CONFIG_H -DGENERATOR_FILE  -o genflags \
         genflags.o rtl.o read-rtl.o bitmap.o ggc-none.o gensupport.o print-rtl.o errors.o ../libiberty/libiberty.a
/usr/bin/ld: i386 architecture of input file `../libiberty/libiberty.a(hashtab.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `../libiberty/libiberty.a(safe-ctype.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `../libiberty/libiberty.a(xmalloc.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `../libiberty/libiberty.a(xstrdup.o)' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `../libiberty/libiberty.a(xexit.o)' is incompatible with i386:x86-64 output

Regards
/Brian



More information about the Gcc-help mailing list