Relocations in generic ELF (EM: 40)

42,706

It looks like you PREVIOUSLY tried to compile with a different toolchain (e.g. x86), and the object files are still there from that build.

Try using

 make clean
Share:
42,706
kevin ver
Author by

kevin ver

Updated on July 15, 2022

Comments

  • kevin ver
    kevin ver almost 2 years

    I trying to cross compile form Ubuntu to Friendly-arm but I'm getting the strange error:

    root@kevin-VirtualBox:/home/kevin/Desktop/makef# make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-l
    gcc -o main obj/main.o obj/serial.o obj/fb.o obj/menu_main.o obj/timer.o obj/cmdin.o obj/buzzer.o obj/statemachine.o obj/inout.o obj/network.o obj/text_file_input.o obj/text_file_input_oven.o -I./ -lgd -lrt
    /usr/bin/ld: obj/main.o: Relocations in generic ELF (EM: 40)
    obj/main.o: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make: *** [main] Error 1
    

    command line : make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-l

    Makefile: (updated)

    export ARCH:=arm
    export CROSS_COMPILE:=arm-none-linux-gnueabi
    
    IDIR =./
    CC=arm-linux-gnueabi-gcc
    CFLAGS=-I$(IDIR)
    
    LD= //opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/bin/
    
    ODIR=obj
    LDIR =./
    
    LIBS=-lgd -lrt
    
    _DEPS = main.h Makefile
    DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
    
    _OBJ = main.o serial.o fb.o menu_main.o timer.o cmdin.o buzzer.o statemachine.o inout.o network.o text_file_input.o text_file_input_oven.o
    OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
    
    
    $(ODIR)/%.o: %.c $(DEPS)
        $(CC) -c -o $@ $< $(CFLAGS)
    
    main: $(OBJ)
        $(CC) -o $@ $^ $(CFLAGS) $(LIBS)
    
    .PHONY: clean
    
    clean:
        rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ 
    

    New errors after updating Makefile:

    root@kevin-VirtualBox:/home/kevin/Desktop/makef# make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi -l
    gcc -o main obj/main.o obj/serial.o obj/fb.o obj/menu_main.o obj/timer.o obj/cmdin.o obj/buzzer.o obj/statemachine.o obj/inout.o obj/network.o obj/text_file_input.o obj/text_file_input_oven.o -I./ -lgd -lrt
    /usr/bin/ld: obj/main.o: Relocations in generic ELF (EM: 40)
    obj/main.o: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make: [main] Error 1 (ignored)
    arm-linux-gnueabi-gcc -o main obj/main.o obj/serial.o obj/fb.o obj/menu_main.o obj/timer.o obj/cmdin.o obj/buzzer.o obj/statemachine.o obj/inout.o obj/network.o obj/text_file_input.o obj/text_file_input_oven.o -I./ -lgd -lrt
    /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld: warning: libz.so.1, needed by /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/lib/../lib/libgd.so, not found (try using -rpath or -rpath-link)
    /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/bin/ld: warning: libexpat.so.1, needed by /usr/arm-linux-gnueabi/lib/libfontconfig.so.1, not found (try using -rpath or -rpath-link)
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_GetBuffer'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_GetErrorCode'
    /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/lib/../lib/libgd.so: undefined reference to `compress'
    /usr/arm-linux-gnueabi/lib/libfreetype.so.6: undefined reference to `inflate'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_SetDoctypeDeclHandler'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_ParserCreate'
    /usr/arm-linux-gnueabi/lib/libpng12.so.0: undefined reference to `crc32'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_GetCurrentLineNumber'
    /usr/lib/gcc/arm-linux-gnueabi/4.6/../../../../arm-linux-gnueabi/lib/../lib/libgd.so: undefined reference to `uncompress'
    /usr/arm-linux-gnueabi/lib/libpng12.so.0: undefined reference to `deflateReset'
    /usr/arm-linux-gnueabi/lib/libpng12.so.0: undefined reference to `deflate'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_SetCharacterDataHandler'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_ParserFree'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_SetUserData'
    /usr/arm-linux-gnueabi/lib/libpng12.so.0: undefined reference to `deflateInit2_'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_ParseBuffer'
    /usr/arm-linux-gnueabi/lib/libfreetype.so.6: undefined reference to `inflateEnd'
    /usr/arm-linux-gnueabi/lib/libpng12.so.0: undefined reference to `deflateEnd'
    /usr/arm-linux-gnueabi/lib/libpng12.so.0: undefined reference to `inflateInit_'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_ErrorString'
    /usr/arm-linux-gnueabi/lib/libfontconfig.so.1: undefined reference to `XML_SetElementHandler'
    /usr/arm-linux-gnueabi/lib/libfreetype.so.6: undefined reference to `inflateInit2_'
    /usr/arm-linux-gnueabi/lib/libfreetype.so.6: undefined reference to `inflateReset'
    collect2: ld returned 1 exit status
    make: *** [main] Error 1
    root@kevin-VirtualBox:/home/kevin/Desktop/makef# 
    

    the makefile works after your comment (thank you) and creates a main file the only error im getting is : warning: format not a string literal and no format arguments [-Wformat-security] but it dossent seem to be critical

  • kevin ver
    kevin ver about 10 years
    make clean returns 'rm -f obj/*.o *~ core /*~ ' and removes all the .o files. When i run make i get the same error
  • Mats Petersson
    Mats Petersson about 10 years
    Ah, yes, I notice that @duskwuff has spotted another problem - it's the same "type of error" (mixing tools), but caused by a different scenario.
  • kevin ver
    kevin ver about 10 years
    updated the question whit the resulted of @duskwuff suggestion
  • Mats Petersson
    Mats Petersson about 10 years
    Looks like you are missing some libraries (some sort of compression/decompression library - not sure if it's libz or something else - and some XML library by the looks of things).