![]() |
c++ mit linux (suse)?
Hallo,
ich habe gerade damit begonnen, damit zu beginnen :) c++ programmieren zu lernen. dabei habe ich einen c++ compiler installiert (gcc...) und mein erster programm geschrieben, den klassiker "hello world". und wie es so ist, schreibt er mir beim compilieren gleich mal eine fehlermeldung. dabei gehe ich mal davon aus das mir irgend ein paket noch fehlt, jetzt würde ich gerne wissen, welche pakete muss ich installieren damit ich erfolgreich c++ programmieren kann? der code: #include <iostream> (habs auch mit <iostream.h> probiert. void main() { cout << "Hallo Welt!"; } die fehlermeldung: first.cpp:1:20: error: iostream: Datei oder Verzeichnis nicht gefunden first.cpp:3: error: ‘::main’ must return ‘int’ first.cpp: In function ‘int main()’: first.cpp:5: error: ‘cout’ was not declared in this scope ich hoffe das mir jemand von euch weiter helfen kann, danke! |
Probiers mal mit:
#include <iostream.h> void main(void) { ... } und wenn das nicht geht dann: #include <iostream.h> int main() { ... return 0; } |
hmm funktioniert leider auch nicht.
würde für mich sowieso irgendwie problematisch werden da ich bücher zum lernen habe. wenn jetzt nichts mehr stimmt was da drin geschrieben steht, dann hab ich sowieso ein problem, da kein lernstoff vorhanden wäre. |
Zitat:
Scheint nämlich ein Problem mit dem include-Directory sein (Rechte?) pong |
Ich führe die Sache als SU aus, sollte daher gehen. Ich hab aber ein Problem mit einem Paket das er mir nicht installiert. Ich denke daran liegt es, da es eine Biblothek/Library ist. Ich lade gerade die gcc 4.2.0 als gesamt Package von einer Seite. Vielleicht funktioniert es ja dann ... ich hoffe es zumindest.
|
Code:
#include <iostream>c++ oder g++ -o prg source.cc c++ -o prg source.cpp c++ -o prg source.c++ .h weglassen int bei main ( ... ) immer dazuschreiben wegen des Standards endl = carriage return + linefeed, geht auch mit \n im String |
es muss was fehlen. ich hab jetzt ein ganzes rpm paket g++ 4.2 r7 runter geladen, gnat.
wollte das installieren, fehlermeldung. ich frag mich mittlerweile, nachdem ich schon bei zwei versionen probleme mit dem paketen hatte die sich nicht installieren ließen oder nicht gefunden wurden, ob die runtergeladenen iso's teilweise auch fehlerhaft sind? wenn ich mir jetzt ein suse 10.2 kaufe, kann es dann sein das ich diese problem los bin, oder wird mir das auch nicht weiter helfen? langsam wirds halt a bisserl nervig. ich verstehe schon nicht, warum bei jeder installation etwas anderes auftaucht, obwohl die installation immer gleich ausgeführt wird, also suse linux allgemein. ich würd mir ja das suse 10.2 kaufen, wenn ich wüsste das dann meine probleme aus der welt sind. |
Schau mal nach, ob Du
libstdc++-devel-_irgendeine_Versionsnr_ installiert hast.... Ich vermute, daß dir einfach die devel-Versionen der glibc++ fehlen.. |
Ja!
und zwar kann ich folgendes Paket nicht installieren: libstdc++41-devel Er schreibt mir folgende Fehlermeldung: Paket libstdc++41-devel ist auf dem Quellmedium nicht zu finden. Bei Details steht dann: Fehler: 3:Package libstdc++41-devel-4.1.2_20061115-5 fails integrity check. Do you want to retry downloading it? Wobei ich keine Auswahl zu Ja/Yes oder Nein/No habe. Ich kann nur "Abbrechen", "Wiederholen" und "Ignorieren". Wiederholen hilft nichts, Ignorieren natürlich auch nicht. |
Du brauchst genau zwei Pakete für den SYSTEMWEITEN C++ Compiler, der da heisst c++ oder g++ nicht aber gcc oder cc (welche den C Compiler meinen):
libstdc++-devel und gcc-c++ Nix mit 41, sondern nur OHNE. Danach "g++ -o prg source.cpp" im Terminalfenster eingeben und es funktioniert. mfg Kikakater |
tja, die zwei sind installiert, aber funkt nicht.
|
Welche Fehlermeldungen schreibt das Programm g++ in das Terminalfenster, wenn Du den obigen C++ Code in einem Editorfenster eingetippt und abgespeichert hast ?
|
Hier der Sourcecode (gepackt) zum Herunterladen:
|
Die Fehlermeldung:
source.cpp:1:20: error: iostream: Datei oder Verzeichnis nicht gefunden source.cpp: In function ‘int main()’: source.cpp:8: error: ‘cout’ was not declared in this scope source.cpp:8: error: ‘endl’ was not declared in this scope |
rebooten
und nochmal machen (herunterladen + kompilieren) als user und dann als root home Verzeichnis + Unterverzeichnis src mit mkdir src sowie cd src und dort source.cpp hinkopieren bzw. herunterladen. Ausserdem iostream suchen mit: 1) su 2) cd / 3) find . -name iostream* |
Der Aufruf des C++ Compilers MUSS so aussehen:
g++ -I/usr/include/c++/4.1.2 -o prg source.cpp wenn iostream in 4.1.2 liegt ! Du musst iostream* suchen und -I<include_dir> im Compileraufruf anführen und NUR u.U. (=wahrscheinlich nicht) die Quelldatei source.cpp anpassen, falls die Datei nicht iostream, sondern iostream.h heisst - sprich, selbst wenn die Datei iostream.xy heisst kann vermutlich #include <iostream> stehenbleiben und muss nicht verändert werden. Wie gesagt: großes I als Schalter anführen -I<dir> |
den Ordern c++ gibts da drin gar nicht.
Sag mal hab nur ich so Probleme mit dem Linux oder geht es jedem so? |
Welchen Installationsdatenträger verwendest Du ?
Aufdruck (Version) + Zeitschrift + Datum und Nummer der Ausgabe Tröste Dich, ich helf' Dir, soweit ich irgendwie kann :-) ... und wie schon geschrieben: Folgendes wäre hilfreich: Wo befindet sich die Datei iostream* <-Wildcard, man weiß ja nicht, wie sie bei Deiner Installation heisst 1) su 2) cd / 3) find . -name iostream* ausführen. Wichtig ! |
Ich hab die SuSE Version 10.2 und von einem ftp, glaub es war die tu-wien, herunter geladen. Dann auf DVD-RW gebrannt.
Bei dem Ausfühlen findet er nichts. Er beendet den Befehl ohne einer Meldung?! |
Dann hast Du das Problem ja schon. Die Headerdatei iostream wurde noch nicht installiert.
Hast Du eine funktionierende Internetverbindung in dieser Installation eingerichtet ? Dann lade Dir die gcc4xy und libstd4xy Pakete auch herunter. (alles c++). Außerdem würde ich die ISO Datei auf einen anderen Rohling brennen, Du hast so etwas wie Wiederholen Abbrechen erwähnt oder ... ? |
tjo, die libstdc++41-devel lässt sich leider nicht installieren, ich denke das dort das problem liegt. alles andere ist schon installiert.
er findet nach den restlichen paketen nach wie vor keine iostream. ich kapier das nicht. ich werde wohl warten bis mir samsung meinen monitor austauscht und dann eine andere distribution versuchen. ich will ja eh nicht unbedingt suse haben. ist nur schade weil ich die woche so viel zeit dafür hätte. |
So, extra hier schnell mal regestriert :P
Hab noch einen Tipp^^ Hab mir deinen Sorce angesehen: Code:
#include <iostream>Code:
#include <iostream.h>greetz |
Das hatten wir schon probiert, geht nicht. Ich werde mich dem Problem morgen Möglicherweise nochmal annehmen. Vielleicht, wenn ich es Zeitlich schaffe, frag ich auch mal am Treffen der LUGA nach.
Es liegt meiner Meinung nach an dem Paket das sich nicht installieren lässt. Ich such mir eine Online Quelle raus, trage die als Quelle ein und lösche alle anderen Quellen raus, vielleicht hilft das. |
Hmm, sorry, hab ich wohl überlesen. Also ich konnts per "g++ -o test source.cpp" kompilieren.
Und es geht auch ;) Jo, probier mal die Files neu zu installieren, Quellen im Inet gibt es ja genug. Ansonsten, falls du dir noch mal eine Distro installieren willst, könntest du auch mal versuchen eine Netzwerkinstallation zu machen, vorausgesetzt du hast die mittel. Aber die Chancen das bei der Installation etwas nicht gelesen werden kann, sind glaub ich übers Netzwerk etwas geringer ;) Außerdem find ich gehts auch etwas schneller :D greetz |
Im Moment kann ich gar nichts machen, mein Linux bootet nicht und eine Neuinstallation ist auch nicht Möglich. Leider kann ich schwer sagen woran es liegt, ich hab einen Memory Check gemacht, alles OK nach 3 durchläufen. Ich hab die neuen RAM's raus genommen und nur die Alten verwendet, selbes Spiel.
Liegt aller wahrscheinlichkeit am Monitor, da muss ich leider warten bis Samsung mir den austauscht. Zwar sollten sie innerhalb von 24H vor-Ort sein, aber dem ist leider nicht so. Ich werde mir jetzt mal für Windows einen Compiler runter laden und mit dem einfach mal unter Windows anfangen. Wenn dann der Monitor getauscht ist, schau ich mir die verschiedenen Distributionen nochmal alle an, und werde mich dann für eine entscheiden. Ich Tipp ja auf Ubuntu, die hat mir bisher immer sehr gut gefallen. |
Andere frage: Kann mir jemand einen C++ Compiler für Windows empfehlen der nicht von Microsoft ist? Mir schwebt ein Compiler vor, der wie unter Linux als Freier Compiler unter GPL (wenn es so etwas bei Compiler gibt :) ) läuft.
Ich will mich nicht den Lizenz Einschränkungen von MS unterwerfen. Zudem sollte es ein Compiler sein der den Standards entspricht. Wäre echt super, dann könnte ich erstmal anfangen bis meine Probleme gelöst sind. Irgendwo muss ich ja experimentieren :) |
|
Keine Ahnung welches ich von den 100ert Files brauche, da hab ich keinen durchblick. Gibt es was einfacheres von der Installation?
Aber wahrscheinlich ist es dann wohl Microsoft, nehme ich an?! |
Du kannst dir auch ein Frontend dazu herunterladen:
Bloodshed |
was brauche ich von den g++ files für windows?
das frontend ist ja quasi mehr oder weniger ein editor?! oder? mir reicht im grunde ja nur der compiler, ich schreib den code einfach in einem editor. die anfänge von c++ verlangen ja nicht sonderlich viel. suse 10.2 hab ich jetzt orginal von einer heft cd, wenn der monitor getauscht wurde werde ich dann nochmals linux installieren. bis dahin will ich mich damit nicht weiter ärgern :) dann werde ich das weiterhin mit linux machen. |
Naja, das ist eine simple IDE.
Die den g++ als Compiler verwendet. Du kannst ja Bloodshed installieren und dann dein Zeug's trotzdem mit deinem Editor schreiben und in der Konsole compilieren. Ansonsten, wenn du aus welchen Gründen auch immer nur die Minimalinstallation verwenden willst, hier der Auszug aus der Doku: << If you want to download the minimal set of tar.[gz|bz2] you will need the mingw-runtime, w32api, binutils and gcc tarball packages. You can find the current versions of these in the "Current" category on the Download page. These will allow you to create your win32 native packages from the command line or configurable IDE. Other packages that you might need to round out your minimal installation are gdb and mingw32-make. >> |
Ich bin ein bisserl verwundert, das MinGW 5.0.0 hat gerade mal 128kb, ich kann mir ja nicht vorstellen dass das ausreichend ist. Brauch ich vielleicht doch MinGW-3.2.0-rc-3.exe mit ca. 50MB?
Da liegt für mich das Problem, das ich nicht weiß was ich davon jetzt brauche oder nicht. Am FTP liegen einige Files, Windows und Linux wohl gemischt. Ich gehe mal davon aus das tar.gz* Files eben Linux/Unix Files sind. Hier der Link zu den Files |
Hat sich erledigt, es ist natürlich das große Paket erforderlich :)
Jetzt funktiioniert auch das HelloWorld Programm :) THX für die Hilfe! |
Andere frage:
Bücher - Ich habe zwei Bücher für den Einstieg in die C++ Programmierung. Allerdings sind die schon etwas veraltet. Jetzt bin ich am Überlegen nicht mit anderen Büchern an zu fangen, ich habe dabei an folgende zwei Titel gedacht: *) C++ easy *) C++ von A bis Z Galileo / Jürgen Wolf Hat jemand damit Erfahrung? Das erste Buch soll mir beim Einstieg helfen, das zweite dann bei allem weiteren. Bei meinen alten Büchern habe ich das Problem, dass sich wohl ein paar Dinge geändert haben. Die Bücher sind vom Jahre 1997. Ich hätte kein Problem damit, wenn nicht schon beim einfachsten HalloWelt Programm Probleme auftreten würden. Wenn man erfahren ist mag das kein Problem sein aber wenn ich als Noob schon dauernd vor Problemen stehe, wo man eh noch Bahnhof versteht, ist das eher weniger Hilfreich :) |
Bei Gallileo kannst du dir das C von A-Z Buch mal ansehen. Ist zwar nicht C++, aber naja.
C wird wahrscheinlich sowieso länger leben als C++ - ich würde jedenfalls nicht mehr zu viele Resourcen an C++ verschwenden. |
Die C++ Programmierung ist um einiges aufwändiger und der Einsatz technisch bedingt (Speichermodell, Erweiterbarkeit) nur für 64bit empfehlenswert. Der Binärcode eines solchen 64bit C++ Programms kann bis zu 40% grösser sein als ein C Programm. Demnach führt C++ ein Nischendasein.
Universell einsetzbare Programmiersprachen sind C und Java. Wobei C für kommerzielle sowie OpenSource Applikationen und Java für plattformübergreifende Programme besonders geeignet ist. Wer wirklich gut programmieren lernen will, sollte sich eine eigene Speicherverwaltung (Bibliothek) für Anwendungen in C programmieren. Wichtig dabei ist folgendes zu beachten: Einteilung des Speichers in unterschiedliche Klassen (Stringtabellen, wiederverwendbare Applikationsblöcke, wiederverwendbare Systemblöcke). Granularität (Unterteilung in 128KB, 64KB, 32KB, 16KB, 8KB, 4KB Blockgrössen) Führung eines Speicherobjektverwendungszählers (Speicherobjekt xy wird n mal verwendet) Freigabestrategie:
Dynamische Anpassung der anfänglichen Anzahlanforderung an Speicherobjekten durch eine Regulierungsfunktion. Damit sind die Vererbungs-, Objektklasseninstanzen- und Konstruktor/Destruktorfähigkeiten auf C übertragen und sogar elegant (und wesentlich effektiver als dies bei C++ geht) erweitert und ermöglichen ein um bis zu 40% kleineres Programm, das obendrein schneller abläuft. Deswegen C und nicht C++. Plattformübergreifend -> portierbaren C Code (erste Wahl) bzw. in weiterer Folge (für Client Server, dort erste Wahl) Java. |
@kikakater: äh - gweep fragt nach Einsteigerbüchern und möchtest, daß er gleich einen eigenen Memory-Manager schreibt und C++ Konstruktoren/Destruktoren in C nachbildet? Findest du das nicht etwas übertrieben, so für den Anfang?
|
Ich glaube, daß es nicht wichtig ist, wie ich über Deine Überlegungen denke, sondern daß gweep etwas (ist gleich obiges Posting) lesen kann, das ihm weiterhilft.
|
ACK - die Frage ist nur, ob ein Anfänger deinen Ausführungen folgen kann.
Rein aus Interesse - in welchem Bereich bist du tätig? |
Nicht (=es handelt sich immer um Unverständigkeit oder Nuancen zum Gegenpol) um Dich zurückzuweisen - das (=meine Tätigkeit) tut nichts zur Sache.
Um es noch einfacher zu formulieren: Es ist nicht meine Absicht, Dich zurückzuweisen oder Verständnis für meine Äußerung abzufordern - das (=Verständnis) gibt es oder nicht und hängt nicht von meiner Überzeugungskraft ab. |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 21:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag