gcc: Linker error zurückverfolgen

Dieses Thema im Forum "C/C++" wurde erstellt von supersucker, 20.12.2006.

  1. #1 supersucker, 20.12.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Heyho,

    ich hab folgendes Problem:

    Ich versuche hier eine in C geschriebene Applikation zum Laufen zu bringen, mittlerweile bin ich schon soweit das das Ding wenigstens kompiliert, dummerweise kriege ich jetzt den wahnsinnig aussagekräftigen Linkererror:

    Code:
    collect2: ld returned 1 exit status
    
    Darüber kommen haufenweise warnings wegen "undefined references", aber keine errors. (Und nein, ich kann nicht erstmal all die Warnings beseitigen, weil 1. der Code ca. 30000 Zeilen umfaßt, 2. nicht von mir ist sondern 3. von jemand der offensichtlich als einzige Qualifikation eine zweiwöchige Arbeitsamt-Umschulung zum Fachinformatiker vorzuweisen hat)

    Deshalb nun meine Frage:

    Wie kriege ich den Linker dazu eine genauere Angabe zu machen wo er scheitert?

    Bisherige Linker-Flags sind

    Code:
    -g
    -Wall
    
    Google und die manpage vom gcc haben mich diesbezüglich nicht wirklich weiter gebracht.....:think: .......komisch, das muss doch genauer rauszufinden sein.......
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Die 'undefined references' sind (zumindest ein Teil) des Fehlers, auch wenn sie als Warnung dargestellt werden.

    Sie treten in der Regel auf, wenn man eine Funktion benutzt, die deklariert aber nicht definiert ist. Zum Beispiel, indem man eine include-Direktive auf math.h hat, die Sinus-Funktion aufruft und beim Linken vergisst, '-lm' mitanzugeben. Wenn es tatsaechlich externe Funktionen sind, reicht es vermutlich aus, die entsprechende Bibliothek miteinzubinden. Ansonsten fehlt Dir vielleicht ein Teil vom Code.
     
  4. #3 supersucker, 20.12.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Deiner Ansicht nach gibt es also keine Möglichkeit herauszufinden weshalb der Linker genau abgebrochen ist?
     
  5. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Nein. Meiner Meinung nach ist eine 'undefined reference' ein Grund fuer den Linker, abzubrechen. Es werden ja die entsprechenden fehlenden Referenzen mitangegeben, wie Du ja auch gesagt hast. Die musst Du suchen und finden, um das Problem zu loesen.
     
  6. #5 supersucker, 20.12.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ja,

    das Dumme ist halt, das ca. 30 - 40 undefined references aus verschiedenen sources-files vorbeirauschen, deshalb frage ich mich halt ab wann für den linker eine undefined reference ein Grund ist abzubrechen.

    Denn die letzte undefined reference ist 1. nicht die letzte linker-action (dann könnte ich es nachvollziehen) und sieht 2. nicht "schlimmer" aus als die anderen.

    Anyway, dann würg ich mal weiter....danke dir soweit.....
     
  7. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Das ist wohl ein 'feature':
     
  8. #7 Keruskerfürst, 20.12.2006
    Keruskerfürst

    Keruskerfürst Kaiser

    Dabei seit:
    12.02.2006
    Beiträge:
    1.366
    Zustimmungen:
    0
    Dann ließ Dir mal man ld genau durch.
    Ebenso info gcc.

    Dort steht nämlich, wie man Debugger Informationen einschaltet und in eine Datei umleitet.
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 supersucker, 20.12.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Sorry, aber bei einer manpage, die ein Buch füllt zu sagen "steht doch in der manpage" ist ja mal völlig sinnentleert.

    Wenn du die Frage liest "Wie wechsel ich Verzeichnisse" , sagt du vielleicht "frag google" aber du sagt garantiert nicht "man bash" oder? (du kannst es natürlich machen, aber inwieweit das sinnvoll ist....)

    So, und google hab ich gefragt, aber über diesen Fall was Griffiges bei google zu finden ist nicht so einfach wie bei meiner Beispielfrage. (wie schon gesagt -g und -Wall sind an).
    Vor allem wenn man - wie ich - nur sporadisch mit dem gcc arbeitet.
    Und ich hab auch die relevanten Abschnitte in der man-page überflogen.

    Also gib doch einfach einen sinnvollen Tip oder spar dir solche total überflüssigen Kommentare.
     
  11. #9 Keruskerfürst, 21.12.2006
    Keruskerfürst

    Keruskerfürst Kaiser

    Dabei seit:
    12.02.2006
    Beiträge:
    1.366
    Zustimmungen:
    0
    Danke! Ebenso.

    Debugging im GCC anschalten: mit Hilfe des Compilerflags -gddb.
     
Thema:

gcc: Linker error zurückverfolgen

Die Seite wird geladen...

gcc: Linker error zurückverfolgen - Ähnliche Themen

  1. java.lang.UnsatisfiedLinkError auf Solaris

    java.lang.UnsatisfiedLinkError auf Solaris: Hallo, ich versuche derzeit ein auf Windows geschriebenes Java Native Interface (JNI) Projekt (1Jar, 2DLL's) auf Solaris zu portieren. Mein...
  2. Linkerproblem mit MXE

    Linkerproblem mit MXE: Hallo Leute :winke:, ich war echt lange nicht mehr hier... Wie auch immer, ich schreibe gerade ein Programm, das sowohl Qt5, als auch OpenMP...
  3. LLVM entwickelt eigenen ELF-Linker

    LLVM entwickelt eigenen ELF-Linker: Wie das LLVM-Projekt bekannt gab, steht mit »lld« ein alternativer Linker bereit, der sich vor allem durch seine gesteigerte Geschwindigkeit...
  4. Linker meckert über nicht definierte Funktion

    Linker meckert über nicht definierte Funktion: Hallo zusammen. Ich habe mir bei mysql den Connector und Beispielcode für den Zugriff auf eine mysql-Datenbank runtergeladen und habe damit,...
  5. Über Linker Skript externe Variablen übergeben

    Über Linker Skript externe Variablen übergeben: Hi, ich habe mich im Rahmen einer Projektarbeit an der Uni mit der "Linker Command Language" beschäftigt und mit dem Umgang des LD's. Als...