Erste Programmierversuche in Linux
-
Hallo Leute!
Ich bin heute angefangen etwas in Linux zu programmieren.
Dafür habe ich mir KDevelop installiert.
Jetzt bekomme ich aber nichtmal ein Hello World Programm zum laufen. Ich bekomme ständig Linker fehler!
[url] http://www.bilder-hochladen.net/files/b6sw-1-png.html [/url]
Weiß jemand Rat? Die Fehler wiederholen sich immer wieder. Er war ca. 15 min am Linken!
Gruß
WAR][FIRE
-
IIRC waren die Abhängigkeiten unter Ubuntu ein bisschen komisch und man musste noch folgende Pakete installieren: make, libtool, autoconf, automake, gdb, build-essential
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Linux/Unix 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.
-
Bis auf build-essential hatte ich schon alle Pakete. Der Fehler besteht leider weiterhin
Vielleicht hilft der Screenshot noch weiter:
http://www.bilder-hochladen.net/files/b6sw-2-png.html
Er kommt halt bis zum Linken. Dann muss ich abrechen, da es sonst 15 min dauert indenen er wie gesagt die Warnungen raushaut.
Gruß
WAR][FIRE
-
WAR][FIRE schrieb:
^^wie's aussieht, versucht er 4 mal die selbe datei zu linken.
-
Das schaut recht komisch aus (Warum erstellt er file.o und "-c"???). Erstell vielleicht mal ein neues Projekt.
Im Zweifelsfall frag, vielleicht im KDevelop Forum.
-
wenn kdevelop permanent zickt, versuchs mal damit: http://projects.gnome.org/anjuta/index.shtml
btw, programmieren unter linux ist nur was für echte männer.
-
+fricky schrieb:
wenn kdevelop permanent zickt, versuchs mal damit: http://projects.gnome.org/anjuta/index.shtml
btw, programmieren unter linux ist nur was für echte männer.
Du willst jetzt aber nicht behaupten, dass das Programmieren unter Linux schwerer wäre als unter Windows, oder?
Installier dir halt mal ein gescheites System, dann klappts auch mit dem Kompilieren.
-
Habe mir jetzt Anjuta zugelegt. Der hat auf anhieb keine Fehler! Danke für den Tipp
Nun habe ich ein anderes Problem. ICh habe einige Bibliotheken und Librarys die ich einbinden muss. Die Bibliotheken befinden sich auf meinem Desktop.
Wie kann ich die bei Anjuta bekannt machen? Und Windows konnte ich bei Visual C++ stumpf den Ordner in eine Liste von Bibliotheksordnern eintragen und es lief.
Unter Linux ist das wohl etwas umständlicher.Habe dazu folgende Anlaeitung gefunden:
http://www.pronix.de/pronix-1122.html
Allerdings habe ich ja die Bibliotheken auf dem Desktop, wo sie auch bleiben sollen.
In der Anleitung steht das man, wenn die Bibliotheken in einem anderen Verzeichnis sind, einen vollständigen Pfad angeben muss. Ich finde aber wohl keine passende form dieses Pfades.
Egal was ich eingebe er findet die Bibliotheken nicht.
http://www.bilder-hochladen.net/files/b6sw-3-png.html
Gruß
WAR][FIRE
-
Vielleicht solltest du erstmal ganz auf eine IDE verzichten, damit du dich mit dem g++ und seinen Optionen vertraut machen kannst. Spaeter kannst du immernoch auf eine IDE wechseln. Dann ist es auch nicht schwer, Probleme per Hand zu bereinigen, wenn mal die IDE rumzickt.
Alternativ kann ich ja noch Eclipse fuer C++ in den Raum werfen ...
-
knivil schrieb:
Vielleicht solltest du erstmal ganz auf eine IDE verzichten, damit du dich mit dem g++ und seinen Optionen vertraut machen kannst. Spaeter kannst du immernoch auf eine IDE wechseln. Dann ist es auch nicht schwer, Probleme per Hand zu bereinigen, wenn mal die IDE rumzickt.
Alternativ kann ich ja noch Eclipse fuer C++ in den Raum werfen ...
Das Problem ist, das ich eine plattformunabhängige Software erstellen soll. Unter Linux möchte ich nur mal testen ob dies der Fall ist.
Ich habe derzeit leider nicht soviel Zeit mich in Linux einzuarbeiten, dass werde ich aber sicher noch nachholen!
Ich guck mir eclipse auch nochmal an.
Gruß
WAR][FIRE
-
WAR][FIRE schrieb:
Ehem! *Räusper* Ich sehe in deinem Screenshot, das du als Include-Guard lediglich ein
#pragma once
drin hast! Ehem! Das ist eine MSVC-only-Anweisung die der GCC nicht versteht! D.h. dein Header wird mehrfach inkludiert werden... was zu Fehler führt. Du mußt noch einen Guard mittels #ifndef einbauen!!! Den pragma kannst du ja trotzdem drin lassen (mache ich auch so). So etwa:// create_serv.h #pragma once #ifndef WARFIRE_CREATE_SERV_H #define WARFIRE_CREATE_SERV_H // hier der Header-Kram rein #endif // WARFIRE_CREATE_SERV_H
-
Hallo!
Ja, das pragma hatte ich schon auskommentiert gehabt, allerdings wusste ich noch nicht, dass das zu Windows gehört
also danke für den Tipp, auf das Problem wäre ich spätestens nach dem erfolgreichen einbinden der Bibliotheken gekommen!
Ich habe nochmal einen Screenshot hochgeladen der das Problem evtl. etwas deutlicher darstellt.
http://www.bilder-hochladen.net/files/b6sw-4-png.html
Hab mich jetzt mal etwas mit dem g++ Compiler beschäftigt und bin nun auf die beiden, im Screenshot zu sehenden Einstellungen gekommen.
Linker: -L<Verzeichnis> <Libary_ohne_lib_und_ohne_.so>
Bibliothek: -I<Verzeichnis>
bzw.
-L"/home/warfire/Desktop/boost_1_39_0/stage/lib" boost_thread-gcc43-mt-1_39
-I"/home/warfire/Desktop/boost_1_39_0/"
Die Fehlermeldungen sind dann im Screenshot....
Ich denke es ist ein Anfängerfehler oder?EDIT: Wenn ich die Zeile bei Biblitheken bei Compiler eintrage, funktioniert das einbinden!!!!
Allerdings funktioniert das linken weiterhin nicht
Gruß
WAR][FIRE
-
Hmm nun habe ich das Projekt mal so umgebastelt, dass ich keine Librarys mehr benötige.
Nun Zickt er aber wieder rum das er eine "undefined reference" hat.
Fehler Code:
/home/warfire/Desktop/boost_1_39_0/boost/system/error_code.hpp:205: undefined reference to `boost::system::get_system_category()'
Screenshot:
http://www.bilder-hochladen.net/files/b6sw-5-png.htmlGruß
WAR][FIRE
-
Du musst auch noch die Boot.System-Library dazu linken.
-
Nur so als Tipp: du brauchst nicht jedes Mal ein Screenshot zu machen, wenn du einen Fehler hast, es genügt den Code drum rum und die Fehlermeldung, und Copy & Paste sollte dir auch bekannt sein, oder? Das ist für alle Beteiligten einfacher.
-
Wenn man sein portables C++-Programm nur auf einer anderen Plattform bauen will, braucht man doch nicht mal ne IDE. Sinnvollerweise schreibt man sich mit einem Multiplattform-Build-Tool ein Script, das man auf jeder Plattforman im Idealfall mit einer Kommandozeile aufrufen kann.
Es ist mir nicht ganz klar, warum man unbedingt eine IDE braucht, um sein Projekt zu bauen. Der Fehler ist ja in diesem Fall nicht in der IDE, sondern in der nicht vorhandenen Projekt-Konfiguration.
Der Fehler wurde also schon gemacht, als man unter Windows entwickelt hat. (nein, Windows ist nicht schuld!)
Wie wäre es, wenn Du ein Build-Tool benutzt, das sowohl unter Linux als auch Windows funktioniert? (z.B. Boost Build 2 oder Scons)