Fehler beim Linken

Dieses Thema im Forum "C/C++" wurde erstellt von freak_out, 15.11.2008.

  1. #1 freak_out, 15.11.2008
    freak_out

    freak_out Cookie

    Dabei seit:
    01.12.2007
    Beiträge:
    234
    Zustimmungen:
    0
    Ort:
    Nachbar von Tux (Aufn Mars)
    Hey Leute,

    ich lese zurzeit das Buch C++ von A bis Z. Und bin gerade dabei mich mit der Netzwerkprogrammierung auseinander zusetzen.

    Also ich habe folgendes Problem. Ich möchte folgenden Code übersetzen:

    Code:
    // echo_client.cpp
    
    #include "socket.h"
    
    #include <string>
    
    #include <iostream>
    
    using namespace std;
    
    
    
    int main (int argc, char *argv[]) {
    
       if( argc < 2 ){
    
          cout << "Usage: " << *argv << " ServerAdresse\n";
    
          return(1);
    
       }
    
       Socket sock;
    
       sock.create();
    
       // Adresse des Servers
    
       string argv_1 = argv[1];
    
       // Mit dem Server auf Port 15000 verbinden
    
       sock.connect( argv_1, 15000 );
    
       cout << "Nachricht an den Server: ";
    
       string s;
    
       getline(cin, s, '\n' );
    
       sock.send( s );
    
       sock.close();
    
       return 0;
    
    }
    
    
    Das Kompilen funktioniert auch ohne Probleme. Nur das Linken klappt nicht. Geany gibt folgende meldung zurück:

    Code:
    /tmp/cc5kZ6Fq.o: In function `main':
    echo_client.cpp:(.text+0xcd): undefined reference to `Socket::Socket()'
    echo_client.cpp:(.text+0xd8): undefined reference to `Socket::create()'
    echo_client.cpp:(.text+0x15c): undefined reference to `Socket::connect(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)'
    echo_client.cpp:(.text+0x1e9): undefined reference to `Socket::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const'
    echo_client.cpp:(.text+0x220): undefined reference to `Socket::close() const'
    echo_client.cpp:(.text+0x28a): undefined reference to `Socket::~Socket()'
    echo_client.cpp:(.text+0x2a3): undefined reference to `Socket::~Socket()'
    collect2: ld gab 1 als Ende-Status zurück
    Kompilierung fehlgeschlagen.
    Ich muss sagen das es bis jetzt immer zur so einen Fehler kam wenn ich mich mit der Netzwerkprogrammierung beschäftigt habe.

    Zusatzinfo:

    Kompiler: gcc-Version 4.3.2 (Ubuntu 4.3.2-1ubuntu11)
    System: xubuntu 8.10

    Freak_out
     
  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. #2 bitmuncher, 15.11.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Liegt die 'socket.h' im gleichen Ordner wie die C-Datei bzw. die beim Linken verwendete Objektdatei oder ist sie wenigstens global in /usr/include oder einem anderen Include-Pfad verfügbar? Hast du beachtet, dass es evtl. im System irgendwo im Include-Pfad bereits eine socket.h gibt und dabei ggf. ein Namenskonflikt für den Linker auftritt, er also einfach die falsche socket.h verwendet?
     
  4. #3 freak_out, 15.11.2008
    freak_out

    freak_out Cookie

    Dabei seit:
    01.12.2007
    Beiträge:
    234
    Zustimmungen:
    0
    Ort:
    Nachbar von Tux (Aufn Mars)
    Also die dateien liegen im gleich Verzeichnis. Und hab mal geguckt ob es mehrere socket.h gibt. Und es gibt einige. Daher habe ich die mal in socket123.h umbenannt und dies dan auch demensprechen im Code umgeändert. Aber trotzdem kommt die selbe Meldung.
     
  5. #4 bitmuncher, 15.11.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Und die zur socket.h gehörige Objektdatei und/oder Bibliothek liegt auch innerhalb des LD_LIBRARY_PATH?
     
  6. #5 freak_out, 16.11.2008
    freak_out

    freak_out Cookie

    Dabei seit:
    01.12.2007
    Beiträge:
    234
    Zustimmungen:
    0
    Ort:
    Nachbar von Tux (Aufn Mars)
    Wie bekomm ich heraus ob es innerhalb des LD_LIBRARY_PATH liegt^^
     
  7. #6 bitmuncher, 16.11.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Entweder gibst du den Pfad beim Kompilieren mit an oder du trägst in fest in die Umgebungsvariable $LD_LIBRARY_PATH ein, die den Standard-Suchpfad beschreibt.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 freak_out, 16.11.2008
    freak_out

    freak_out Cookie

    Dabei seit:
    01.12.2007
    Beiträge:
    234
    Zustimmungen:
    0
    Ort:
    Nachbar von Tux (Aufn Mars)
    Achso ok.

    Also ich habe jetzt mal die socket.h und die echo_client.cpp in einem Ordner namens a auf meinen Desktop verschoben.

    Dann bin ich via Terminal in diesen Order gegangen.
    Und habe folgendes eingegeben:

    g++ -I/home/freakout/Desktop/a/ echo_client.cpp -o echo_client

    Aber es kam wieder die selbe Meldung:
    Code:
    /tmp/ccjdmdhY.o: In function `main':
    echo_client.cpp:(.text+0xcd): undefined reference to `Socket::Socket()'
    echo_client.cpp:(.text+0xd8): undefined reference to `Socket::create()'
    echo_client.cpp:(.text+0x15c): undefined reference to `Socket::connect(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int)'
    echo_client.cpp:(.text+0x1e9): undefined reference to `Socket::send(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const'
    echo_client.cpp:(.text+0x220): undefined reference to `Socket::close() const'
    echo_client.cpp:(.text+0x28a): undefined reference to `Socket::~Socket()'
    echo_client.cpp:(.text+0x2a3): undefined reference to `Socket::~Socket()'
    collect2: ld gab 1 als Ende-Status zurück
     
  10. #8 bitmuncher, 17.11.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Noch mal langsam zum Mitschreiben: ;) In deiner echo_client.cpp ist die von dir verwendete Socket-Klasse nicht definiert. Ich gehe also mal davon aus, dass sie in der socket.h deklariert ist. Wenn der Compiler die zur Header gehörende Objektdatei bzw. Bibliothek finden soll, muss sie sich entweder im Source-Ordner oder innerhalb von $LD_LIBRARY_PATH befinden.
     
Thema:

Fehler beim Linken

Die Seite wird geladen...

Fehler beim Linken - Ähnliche Themen

  1. Ubuntu fehler beim instalieren

    Ubuntu fehler beim instalieren: Hallo Ich wollte auf meinem Pc Ubuntu neben Windows instalieren da ich hörte ist besser geignet für steam games. Ich habe mir deshalb auf einem...
  2. fstab: Netzlaufwerk beim Booten einbinden verursacht Fehler

    fstab: Netzlaufwerk beim Booten einbinden verursacht Fehler: Ich benutze davfs2, um ein WebDAV-Verzeichnis einzubinden. Wenn ich folgenden Eintrag in meine fstab schreibe, kann ich das Verzeichnis wunderbar...
  3. KSH: Problem beim Umleiten des Fehlerkanals

    KSH: Problem beim Umleiten des Fehlerkanals: Hallo, in einen KSH Skript führe ich folgende Befehle aus RESULT=""; ERROR=""; idsldapsearch -h localhost -p $PORT -D $USER -w $PW -s sub -b...
  4. Fehlermeldung beim SSH-Login / Server nicht mehr erreichbar

    Fehlermeldung beim SSH-Login / Server nicht mehr erreichbar: Hallo, nach einem Neustart ist mein Lenny (Root-Server bei Hetzner) leider nicht mehr so richtig aufgewacht. Die Symptome: - Websites sind...
  5. VirtualBox Fehler beim Installieren

    VirtualBox Fehler beim Installieren: Hallo zusammen Ich habe mir das Fedora 15 aufegspielt und wollte mir heute mal die Virtualbox installieren. Lerider bekomme ich immer ein Fehler...