-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Fehler beim Kompilieren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.07.2008
    Alter
    24
    Beiträge
    8

    Fehler beim Kompilieren

    Anzeige

    Hallo,

    ich hab folgendes Problem beim Kompilieren mit WinAvr:
    im Forum habe ich schon gesucht aber irwie keine richtige lösung gefunden...den Code den ich Kompiliere, der ist das LED beispielprogramm, aus den Examples.
    Edit: ich habe es auch mit der make_all.bat batch-datei probiert...
    Ich habe programmierkentnisse in VB .Net VBA etwas Java und noch etwas C++.
    > "make.exe" all

    Linking: .dep/RP6Base_LEDs.elf
    avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.o -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.elf.d RP6Base_LEDs.o ../../RP6Lib/RP6base/RP6RobotBaseLib.o ../../RP6Lib/RP6common/RP6uart.o --output .dep/RP6Base_LEDs.elf -Wl,-Map=RP6Base_LEDs.map,--cref -lm
    RP6Base_LEDs.o: In function `main':
    c:\programme\rp6\examples\rp6base_examples\example _01_leds/RP6Base_LEDs.c:64: undefined reference to `setLEDs'
    c:\programme\rp6\examples\rp6base_examples\example _01_leds/RP6Base_LEDs.c:77: undefined reference to `setLEDs'
    c:\programme\rp6\examples\rp6base_examples\example _01_leds/RP6Base_LEDs.c:94: undefined reference to `setLEDs'
    make.exe: *** [.dep/RP6Base_LEDs.elf] Error 1

    > Process Exit Code: 2
    > Time Taken: 00:00
    und wenn es an der avrc lib liegt, dann schickt mir bitte einen link, wo ich diese finden kann.

    Danke für eure Hilfe Gruß jvbsl

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622

    Re: Fehler beim Kompilieren

    Hallo,

    Zitat Zitat von jvbsl
    RP6Base_LEDs.o: In function `main':
    c:\programme\rp6\examples\rp6base_examples\example _01_leds/RP6Base_LEDs.c:64: undefined reference to `setLEDs'
    c:\programme\rp6\examples\rp6base_examples\example _01_leds/RP6Base_LEDs.c:77: undefined reference to `setLEDs'
    c:\programme\rp6\examples\rp6base_examples\example _01_leds/RP6Base_LEDs.c:94: undefined reference to `setLEDs'
    Du hast irgendwo in Deiner "main" einen Aufruf der Art <pre>setLEDs()</pre>, der vom Linker nicht aufgelöst werden kann. Wo ist Deine Funktion <pre>setLEDs()</pre> definiert/deklariert?

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.07.2008
    Alter
    24
    Beiträge
    8

    Re: Fehler beim Kompilieren

    Hallo,

    hier mein Code setLEDs() rufe ich in der Main Methode auf:
    Code:
    #include "RP6RobotBaseLib.h" 
    
    int16_t main(void)
    {
    	initRobotBase(); 
    	
    	writeString_P("\n\n   _______________________\n");
    	writeString_P("   \\| RP6  ROBOT SYSTEM |/\n");
    	writeString_P("    \\_-_-_-_-_-_-_-_-_-_/\n\n");
    
    	writeString_P("Hello World! My name is Robby!\n");
    	writeString_P("Let's go! :)\n");
    
    	setLEDs(0b111111); 
    	mSleep(1000); 
    	setLEDs(0b000000);
    	mSleep(500);
    
    	uint8_t runningLight = 1;
    	
    	while(true)
    	{
    		setLEDs(runningLight); 
    		runningLight <<= 1; 
    		if(runningLight > 32)
    			runningLight = 1;
    		mSleep(100); 
    	}
    	return 0; 
    }
    Gruß jvbsl

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622

    Re: Fehler beim Kompilieren

    Hallo,

    ich kenne Deine Software nicht, kann Dir aber wahrscheinlich helfen, wenn Du hier eine (z.B. ZIP-) Datei mit allen Komponenten (einschl. RP6RobotBaseLib.h) anhängst. Wie gesagt, der Compiler scheint nicht zu wissen, worum es sich bei <pre>setLEDs()</pre> handelt! Wo ist diese Funktion deklariert/definiert?

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    12.07.2008
    Alter
    24
    Beiträge
    8

    Re: Fehler beim Kompilieren

    Hallo,

    ich benutze den Programmer's Notepad v2.0.7.667 also WinAvr oder so.
    der Anhang enthält alle Examples von der CD...und auf meinem alten PC hat das Kompilieren ja ohne probleme funktioniert.

    http://www.roboternetz.de/phpBB2/files/examples.rar

    Gruß jvbsl
    Angehängte Dateien Angehängte Dateien

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622

    Re: Fehler beim Kompilieren

    Hi,

    es genügt nicht, dass Du <pre>#include "RP6RobotBaseLib.h"</pre> verwendest. Du musst auch "RP6RobotBaseLib.c" mit angegeben habe (ich verwende AVRStudio, da würde man diese Datei unter "Source Files" angeben). Wie das bei Deiner Entwicklungsumgebung funktioniert, weiß ich nicht. Das Problem ist jedenfalls, dass der Linker die Funktion nicht kennt.

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.12.2007
    Beiträge
    280
    Hast du schonmal bei deiner makefile die RP&RobotBaseLib.c eingetragen? wenn du das mfile Program von WinAVR verwendest, kannst du die Datei bei "C++ source files" anhängen. Bei den Beispielen sind ja Makefiles dabei wo die RP6RobotBaseLib bei "source" dabeisteht.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    12.07.2008
    Alter
    24
    Beiträge
    8
    Hallo,

    nein das hab ich leider noch nicht ausprobiert, könntest du mir vielleicht erklären wie man soetwas bewerkstelligen kann?

    Danke jvbsl

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.12.2007
    Beiträge
    280
    In deinem Programmordner muss es eine Datei mit dem namen makefile geben.

    ich hab jetzt nur mal den Anfang der makefile reingestellt:

    Code:
    # Hey Emacs, this is a -*- makefile -*-
    ###############################################################################
    # RP6 MAKEFILE FOR WinAVR
    # Based on WinAVR Sample makefile written by Eric B. Weddington,
    # Jörg Wunsch, et al.
    #
    #
    # YOU NEED TO EDIT SOME SMALL THINGS IN THIS FILE IF YOU WANT TO USE
    # IT FOR YOUR OWN PROJECTS!
    # THESE LINES ARE ALL AT THE TOP OF THIS FILE AND MARKED VERY CLEARLY !
    # BETTER DO NOT EDIT ANYTHING ELSE!
    #
    # To compile everything you can simply type "make all" on a command line in
    # this directory or simply use the supplied batch files!
    # To remove all the temporary files the compiler has generated you can use
    # "make clean"
    # See end of this file and "make" user manual for more details!
    #
    #
    # Note: Everything behind a '#' is interpreted as a comment in this file!
    #
    ###############################################################################
    
    
    
    
    ###############################################################################
    # Target file name (without extension).
    # This is the name of your main C source file! Do NOT append the ".c"!
    # Example: Let's assume your main source file is "RP6Base_MyProgram.c", then
    # you would write: TARGET = RP6Base_MyProgram
    
    TARGET = RP6Base_LEDs
    
    ###############################################################################
    
    
    
    ###############################################################################
    # Specify relative path to RP6 library files here.
    # This is "../../RP6Lib" or "../RP6Lib" usually.
    
    RP6_LIB_PATH=../../RP6Lib
    RP6_LIB_PATH_OTHERS= $(RP6_LIB_PATH)/RP6base $(RP6_LIB_PATH)/RP6common
    
    ###############################################################################
    
    
    #------------------------------------------------
    # Main Source file is _automatically_ added here:
    SRC = $(TARGET).c
    # DO NOT EDIT THIS!
    
    
    ###############################################################################
    # If there is more than one source file, append them here separated by spaces.
    # Usually you have to add the Library files here! (ONLY add c files "*.c" here,
    # NO header files "*.h"!)
    # Don't forget to add relative paths!
    
    SRC += $(RP6_LIB_PATH)/RP6base/RP6RobotBaseLib.c
    SRC += $(RP6_LIB_PATH)/RP6common/RP6uart.c
    Bei den letzten beiden zeilen siehst du welche Dateien mit eingebunden werden. So muss es bei dir auch ausschauen.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hi,

    laut Dokumentation muss

    <pre>SRC += $(RP6_LIB_PATH)/RP6base/RP6RobotBaseLib.c</pre>

    in den makefile (Syntax/Pfad muss an Deine Verhältnisse angepasst werden!).

    Gruß

    Fred


    PS: OOps, Martin war schneller!
    Only entropy comes easy. - Anton Checkhov

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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