tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
8114
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hintermair hintermair ist offline Grünschnabel
    Registriert seit
    Apr 2009
    Beiträge
    3
    Hallo,

    soll fürs studium was in c erarbeiten, um c kennenzulernen

    leider bekomme ich immer "undefined reference to" wenn ich make aufrufe

    makefile (vom prof bekommen):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    objects = main.o complex.o date.o
    libobj = complex.o date.o
    all: libio.a main
    main: main.o libio.a
        gcc -Wall -o main main.o -L -lio
    main.o: date.h complex.h
        gcc -Wall -c main.c
    complex.o:
        gcc -Wall -c complex.c
    date.o:
        gcc -Wall -c date.c
    libio.a: $(libobj)
        ar rs libio.a $(libobj)
    clean:
        rm -f libio.a main.exe main.o $(libobj)

    main.c:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    #include <stdio.h>
    #include "date.h"
    #include "complex.h"
     
    int main ()
    {  date datum;
       complex komplex;
     
       for(;;)
       {  printf("Beispiel 26.4.2009)\nBitte eingeben: ");
          read_date(stdin, &datum);
          printf("\n");
          printf("Beispiel (1.234, 3.21)\nBitte eingeben: ");
          read_complex(stdin, &komplex);
          print_date(stdout, &datum);
          printf("\n");
          print_complex(stdout, &komplex);
          printf("\n\n");
       }
    }

    date.c:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    #include <stdio.h>
    #include "date.h"
     
    void read_date(FILE *file, date *d)
    {  char line[100];
     
       fgets(line, sizeof(line), file);
       sscanf(line, "%d.%d.%d", &d->day, &d->month, &d->year);
    }
     
    void print_date(FILE *file, date *d)
    {  fprintf(file, "%02d.%02d.%04d", d->day, d->month, d->year);
    }

    date.h
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    #ifndef DATE_H
    #define DATE_H
     
    #include <stdio.h>
     
    struct date
    {  int year;
       int month;
       int day;
    };
     
    typedef struct date date;
     
    extern void read_date(FILE *file, date *d);
    extern void print_date(FILE *file, date *d);
     
    #endif

    complex.c und complex.h haben grundsaetzlich den selben aufbau wie die date-dateien.
    ------------------------------------------------------------

    ich aergere mich jetzt schon ein paar tage damit rum und komme nicht weiter.
    deswegen hoffe ich jemand kann mir sagen was ich falsch gemacht habe.
    danke schonmal im vorraus fuer jegliche muehe
    Geändert von hintermair (27.04.09 um 13:41 Uhr)
     

  2. #2
    3Cyb3r 3Cyb3r ist offline Mitglied Brokat
    Registriert seit
    May 2008
    Ort
    Baunatal (Hessen)
    Beiträge
    413
    Bitte Code-Tags benutzen also ["C"]["/C"] ohne "".
     
    Bei der Geburt ist ein Mensch so unfertig, wie ein an einem schönen blauen Montag in Taiwan hergestellter Computer vor der Programmierung.
    - Wolfgang Körner

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Und die vollständige Fehlermeldung wäre noch wichtig.

    Und bitte bearbeite deinen Beitrag hinsichtlich des Hinweises von 3Cyb3r. Für den Makefile Code kannst du einfach [code]...[/code] verwenden.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    hintermair hintermair ist offline Grünschnabel
    Registriert seit
    Apr 2009
    Beiträge
    3
    ich geb mal alles an

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    $ make
    gcc -Wall -c complex.c
    gcc -Wall -c date.c
    ar rs libio.a complex.o date.o
    ar: creating libio.a
    gcc -Wall -c main.c
    gcc -Wall -o main main.o -L -lio
    main.o:main.c:(.text+0x4b): undefined reference to '_read_date'
    main.o:main.c:(.text+0x7c): undefined reference to '_read_complex'
    main.o:main.c:(.text+0x95): undefined reference to '_print_date'
    main.o:main.c:(.text+0xba): undefined reference to '_print_complex'
    collect2: ld returned 1 exit status
    make: *** [main] Error 1
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Es scheint mir da fehlt ein Punkt hinter dem -L in dem Makefile
    Code :
    1
    
    gcc -Wall -o main main.o -L. -lio
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    hintermair hintermair ist offline Grünschnabel
    Registriert seit
    Apr 2009
    Beiträge
    3
    okay...
    funktioniert...
    verdammmich...

    danke
     

Ähnliche Themen

  1. [wxWidgets][C++] Fehler: Undefined Reference
    Von ComFreek im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 12.06.10, 15:24
  2. Undefined Reference to - Neues C FIle
    Von Talantyyr im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 31.05.10, 20:52
  3. [C++]multiple definitions and undefined reference
    Von Online-Skater im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 20.03.08, 10:13
  4. undefined reference to `sigemtyset' ....
    Von Lemiras im Forum Linux & Unix
    Antworten: 1
    Letzter Beitrag: 28.04.05, 17:32
  5. [Linker Error] undefined reference to..
    Von srpcool im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 07.04.04, 22:51