Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12
  1. #1
    Jonagold
    Themenstarter

    Registriert
    07.2009
    Beiträge
    23

    gcc undefined symbols

    Abend,

    nachdem ich mir jetzt auf dem mac soweit alles an Entwicklungs- und Testumgebung eingerichtet habe wollte ich ein erstes Projekt compilieren, gcc war damit anscheinend nicht ganz so einverstanden. Es ist nur ein einfaches Testprojekt bestehend aus einer einer C Datei

    test.c:
    Code:
    #include <stdio.h> 
    extern int method(int n);
     
    int main(void)
    {    
        printf(method(2));
        return 0;
    }
    code.S:
    Code:
    .section.text,
    
    .globl method
    method:
    ...
    Das man global durch globl ersetzen muss hab ich bereits rausgefunden, allerdings will mir gcc das ganze so nicht linken

    gcc -m32 -o prog code.S test.c

    gibt mir den Fehler

    Undefined symbols for architecture i386:
    "_method", referenced from:
    _main in ccfrOLS9.o
    ld: symbol(s) not found for architecture i386


    Am Code liegt es definitiv nicht da das ganze auf einer Linux Maschine das gewünschte Ergebnis gebracht hat. Hat mir jemand einen Tipp wo das Problem liegt? Die Forensuche und google haben hier leider nicht viel weitergeholfen weil bei den ganzen Problemen jeweils eine Bibliothek oder ähnliches gefehlt hat was hier ja nicht der Fall ist, sonst würde der Code auf einer anderen Architektur nicht problemlos laufen.

  2. #2
    Blutapfel Avatar von below
    Registriert
    10.2006
    Ort
    Wiesbaden
    Alter
    41
    Beiträge
    2.609
    Da ist noch etwas nicht richtig, ich kann Dir aber jetzt auf die Schnelle nicht sagen, was: Deine Funktion landet eben nicht in der (__TEXT,__text) Section. Damit ist auch erklärt, warum der Linker sie nicht finden kann.

    Assembler ist jetzt bei mir schon lange her, da müsste ich jetzt noch mal tiefer buddeln. Hilfreiche Werkzeuge hier sind aber nm und otool -t -v

    Gruss

    Alex
    Dir gefällt die neue Apfeltalk-Registrierung? Dann setz mich bitte auf Deine Ignorier-Liste

  3. #3
    Blutapfel Avatar von below
    Registriert
    10.2006
    Ort
    Wiesbaden
    Alter
    41
    Beiträge
    2.609
    Also, richtig sollte sein:
    Code:
    .text
    
    .globl _method
    _method:
    ...
    Alex
    Dir gefällt die neue Apfeltalk-Registrierung? Dann setz mich bitte auf Deine Ignorier-Liste

  4. #4
    Jonagold
    Themenstarter

    Registriert
    07.2009
    Beiträge
    23
    Vielen dank schonmal, so gehts jetzt auch auf dem Mac. Momemtan hab ich nur noch 2 Probleme: 1. ".extern xyz" mag er nicht und 2. ".int xyz" auch nicht. Wieder lief beides auf einer anderen Maschine schon. Weiß jemand zufällig welche Befehle der OSX linker da sehen möchte?

  5. #5
    Blutapfel Avatar von below
    Registriert
    10.2006
    Ort
    Wiesbaden
    Alter
    41
    Beiträge
    2.609
    Wichtig: Wenn Du ein neueres OS X benutzt, dann ist gcc hier gar kein gcc, sondern llvm mit gcc Frontend (mach mal: ls -l `which gcc`) . Der soll natürlich angeblich 100% kompatibel sein zu gcc, ob das aber auch für Assembly gilt, kann ich Dir nicht sagen.

    Ich denke mal es lohnt sich für Dich, Dir da mal die llvm Dokumentation anzusehen.

    HTH

    Alex
    Dir gefällt die neue Apfeltalk-Registrierung? Dann setz mich bitte auf Deine Ignorier-Liste

  6. #6
    Jonagold
    Themenstarter

    Registriert
    07.2009
    Beiträge
    23
    danke das wusste ich nicht, ich dachte wenn das ding gcc heist wirds auch das passende sein aber anscheinend nicht, zumindest hier ist er nicht 100% kompatibel. Dann werde ich wohl mal die Dokumentation lesen müssen, sehr seltsam

  7. #7
    Blutapfel Avatar von below
    Registriert
    10.2006
    Ort
    Wiesbaden
    Alter
    41
    Beiträge
    2.609
    Apple hat sich von gcc verabschiedet, der neue König heisst llvm. Das gcc Frontend ist nur als "Übergangshilfe" gedacht.

    Alex
    Dir gefällt die neue Apfeltalk-Registrierung? Dann setz mich bitte auf Deine Ignorier-Liste

  8. #8
    Jonagold
    Themenstarter

    Registriert
    07.2009
    Beiträge
    23
    na toll, dann schau ich besser mal wo ich einen richtigen gcc herbekomme

  9. #9
    Blutapfel Avatar von below
    Registriert
    10.2006
    Ort
    Wiesbaden
    Alter
    41
    Beiträge
    2.609
    Älteres OS X, oder Macports. Besser und zukunftssicherer: Code auf llvm, as oder nasm anpassen.

    Gruss

    Alex
    Dir gefällt die neue Apfeltalk-Registrierung? Dann setz mich bitte auf Deine Ignorier-Liste

  10. #10
    Pii
    Pii ist offline
    Schöner von Nordhausen Avatar von Pii
    Registriert
    06.2007
    Beiträge
    321
    Bei Xcode 3.2.6 ist der gcc dabei.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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