- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: Linkerfehler beim Makefile

  1. #1

    Linkerfehler beim Makefile

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo. Ich habe mal versucht für meine Projekte ein Basismakefile aufzubauen, ich will das Makefile aus dem sample-ordner nicht verwenden sondern mein eigenes. Leider klappt das nicht so wie ich es erwartet habe. Aus dem vorgefertigten Makefile habe ich entnommen, dass ich zunächst das .o aus dem .c erstelle und dann aus dem .o ein .elf. Leider klappt dieser zweite schritt bei mir schon nicht.

    Hier meine Ausgaben:

    vr-gcc -g -Os -Wall -Wstrict-prototypes -Wa,-ahlms=main.lst main.c -o main.o
    main.c:7:2: warning: no newline at end of file
    avr-gcc -W1,-Map=main.map,--cref -mmcu=at90s8535 main.o -o main.elf
    main.o(.text+0x50): In function `__vector_10':
    : multiple definition of `__bad_interrupt'
    C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/lib/crts8535.o(.text+0x0): first defined here
    main.o(.text+0x0): In function `__vector_default':
    : multiple definition of `__vectors'
    C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/lib/crts8535.o(.vectors+0x0): first defined here
    make.exe: *** [main.elf] Error 1


    ---------------------------------------------------------------------------------
    Ich weiss nicht ob es was bringt wenn ich mein Makefile poste. Es ist noch nicht so superlang, deshalb kann ich es mal posten:

    MCU = at90s8535
    FORMAT = ihex
    LANGUAGE = -std=gnu99
    TARGET = main

    LIB =
    INC =

    CC = avr-gcc
    FLAGS = -g -Os -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)
    LINKERFLAGS = -W1,-Map=$(TARGET).map,--cref -mmcu=$(MCU)
    ISP_DIR = C:/Programme/PonyProg2000/PONYPROG2000.EXE

    OBJ = $(TARGET).o
    ELF = $(TARGET).elf
    OUT = $(TARGET).out


    all: $(OBJ) $(ELF)

    clean:
    rm -f *.o
    rm -f *.out
    rm -f *.lst
    rm -f *.elf
    rm -f *.map

    $(ELF): $(OBJ)
    $(CC) $(LINKERFLAGS) $(OBJ) $(LIB) -o $@

    main.o: main.c
    $(CC) $(FLAGS) main.c -o $@
    ------------------------------------------------------------------------------------

    Hoffentlich könnt ihr mir weiterhelfen....

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    Da steht es:
    main.o(.text+0x50): In function `__vector_10':
    : multiple definition of `__bad_interrupt'
    irgendwo ist __bad_interrupt mehrfach definiert. Liegt also irgendwo im Code.

    Btw, warum willst du das vorhandene Makefile nicht benutzen? Die sind i.A. ziemlich gut ...

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    10.11.2004
    Beiträge
    17
    Hi

    beim bauen des Objects wird kein -mmcu=... angegeben. Das ist nicht gut. Füge deiner FLAGS-Variable mal -mmcu=$(MCU) hinzu.

    Matthias

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests