Kompilieren und Linken mit g++ Verständnisprobleme



  • Servus,

    ich habe eine Anwendung, die ich in eine Datei gepfercht habe.

    Meine IDE (Netbeans) fertigt den Build wunderbar, Netbeans setzt im Hintergrund auf eine make-Datei. Okay, nun bin ich mit der Anwendung zufrieden und will die Anwendung hier auf meinem Heimrechner für Linux kompilieren und linken und dann auf einem Cluster ans Laufen bekommen.

    Ich kompiliere also und der Compiler meckert, weil Header-Dateien nicht gefunden werden können. Kein Problem ich setze das -I/home/...-Flag, zu dem Ort an dem die Dateien liegen. Der Compiler läuft problemlos durch, ich nutzte den Standard-g++-Befehl, also kompilieren und linken in einem Aufwasch und wenn ich dann mein Programm ausführe klappt alles.

    Ich frage mich aber gerade, wann braucht der Linker eigentlich die Objektdateien, der von mir via Include-Flag genutzten Dateien. Ich habe nämlich die Bibliothek schon ordnungsgemäß 'installiert', also ich gehe davon aus, dass CMake da schön sauber die Bibliotheksquellen auf meinem Rechner kompiliert und gelinkt hat.

    Oder ist es in diesem Fall gar so, dass wenn der Compiler nichtübersetzte Quelldateien der Bibliothek findet, diese Dateien gleich mitübersetzt?

    In jedem Fall bin ich nun ja soweit, dass das Programm hier auf meinem Heim-Rechner läuft (Linux-Ubuntu 0815-Architektur). Auf dem Computercluster (Linux-Debian) und auf meinem Heimrechner sind ja beides Linux-Maschinen - ich denke ich sollte die Quelltexte dort auf dem Cluster nochmal neu kompilieren, vielleicht ist das ja eine andere Architektur oder was auch immer und wenn dort auch g++ vorhanden ist, sind doch da keine Probleme zu erwarten - oder täusche ich mich?

    Danke vorab für etwas Aufklärung.



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ (auch C++0x) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich verstehe dich nicht ganz. Objektdateien werden nicht mit -I... angegeben. Die vom GCC zu Objektdateien (.o) kompilierten cpp-files, die du beim Linken angibst, solltest du am Besten als absoluten oder relativen Pfad zum Verzeichnis angeben. Die Libraries (.a), die aus mehreren *.o-Dateien zusammengesetzt sind, gibst du bei libxxx.a per -lxxx an. Damit diese Libraries gefunden werden, gibst du die Suchpfade mit -LPfad an.


Anmelden zum Antworten