g++ klappt nicht
-
Hallo,
ich fanger gerade an Mit Linux zu proggen. Ich habe bis auf PHP und HTML eigendlich keine Ahnung. Nur muss ich fuer meinen spaeteren Beruf wenigstens Grundkentnisse in C++ haben. D.h. ich mich Kurzerhand im I-Net schlau gemacht habe und auch ein tolles Tut gefunden habe, welches anscheinend fuer einsteiger gedacht ist.
Dort wird beschrieben, dass man unter Linux mit dem einfachen Befehl g++ -o den Namen der Datei (wenn man im Verzeichnis ist) eine *.cpp Datei Compilen kann. Ich denke mal, dass der Rechner das Ding gleich in eine *.sh Datei umwandelt. Nun, und nun stehe ich da. Mein erstes "Hallo Welt" Programm und keine Ahnung, wie ich es compilen kann. Mit EMacs komme ich noch nicht so richtig klar. Aber ich steigere mich. Habe es jetzt geschafft etwas zu speichern und zu laden.
Wenn ich unter "tools" "compilen" Anklick erscheint unten in der letzten Zeile ein Befehl: make -k und dann tipsel ich da den Dateinamen hinter und dann sagt er mir, das es nicht geht.
Waer toll, wenn mir jemand helfen koennte.
Engelsblut
-
grundsätzlich kompilierst du ganz einfach mit
g++ datei.cpp -o datei
und bekommst die ausführbare datei 'datei'.
Wenn da in emacs make -k steht, kannst du den namen der datei, ohne erweiterung hinterschreiben. Das sollte dann auch funktionieren, aber eigentlich schreibt man sich da einen Makefile (wo dann letztendlich der g++-Befehl drinsteht).
Engelsblut schrieb:
Mit EMacs komme ich noch nicht so richtig klar. Aber ich steigere mich.
geht mir genauso.
-
Er findet in beiden fallen nicht den g++ Befehl. Ich denke mal, das mir ein Paket fehlt. Wo bekomme ich das Paket her und wie heisst es?
Habe Mandrake 9.1
-
Engelsblut schrieb:
Er findet in beiden fallen nicht den g++ Befehl. Ich denke mal, das mir ein Paket fehlt.
Unwahrscheinlich, der g++ ist fast überall dabei. Tipp einfach mal in die normale Konsole folgendes ein: g++ --version
Wenn er das findet, dann hast du ihn auch installiert.
Mit EMacs komme ich noch nicht so richtig klar. Aber ich steigere mich. Habe es jetzt geschafft etwas zu speichern und zu laden.
Wenn man einmal drin ist, dann will man nix anderes mehr (Ich speichere inzwischen in jeder Anwendung mit C-x C-s
)
-
GPC schrieb:
Unwahrscheinlich, der g++ ist fast überall dabei. Tipp einfach mal in die normale Konsole folgendes ein: g++ --version
Wenn er Mandrake hat, dann kann es durchaus sein, dass er das nicht mitinstalliert hat; die meisten Desktop GNU/Linux-Distros installieren den nicht defaultmäßig mit.
Engelsblut: Wie das Paket unter Mandrake heißt, weiß ich auch nicht, aber das sollte recht leicht zu finden sein.
Engelsblut schrieb:
Mit EMacs komme ich noch nicht so richtig klar. Aber ich steigere mich. Habe es jetzt geschafft etwas zu speichern und zu laden.
Wow, als Anfänger gleich Emacs? Hut ab, das hätte mich überfordert.
Ich denke mal, dass der Rechner das Ding gleich in eine *.sh Datei umwandelt.
Ich hoffe, ich habe dieses Statement jetzt nicht missverstanden, aber C++-Code wird nicht zu sh-Code umgewandelt, sondern in Maschinensprache übersetzt. Genau dafür brauchst Du auch die gcc.
-
nman schrieb:
Wenn er Mandrake hat, dann kann es durchaus sein, dass er das nicht mitinstalliert hat; die meisten Desktop GNU/Linux-Distros installieren den nicht defaultmäßig mit.
Das ist mir jetzt neu, ich war der Meinung, dass es nur vereinzelte Suse Distributionen ohne den g++ gibt. Weiß zwar nicht, wozu das gut sein soll, aber egal.
-
selbst bei debian musste ich schon oft erst g++ nachinstallieren.
-
DrGreenthumb schrieb:
selbst bei debian musste ich schon oft erst g++ nachinstallieren.
Im Ernst, sogar bei Debian? Das hätte ich nicht erwartet (bin erschüttert). Was habe ich von meiner Linux Distribution ohne Compiler? Praktisch alle Programme liegen in Source-Form vor.
-
GPC schrieb:
Im Ernst, sogar bei Debian? Das hätte ich nicht erwartet (bin erschüttert).
Wieso? Das macht durchaus Sinn; auf meinem Mailserver brauche ich keine gcc.
Was habe ich von meiner Linux Distribution ohne Compiler? Praktisch alle Programme liegen in Source-Form vor.
Liegt aber auch fast alles als .rpm oder .deb vor, insofern...
-
Ok, der Mailserver ist n Punkt für dich. Da braucht man ihn wirklich nicht.
nman schrieb:
Liegt aber auch fast alles als .rpm oder .deb vor, insofern...
Stimmt, aber mir ist das Source-Format am liebsten, nicht nur wegen der Größe. Abgesehen davon hab ich als Slackware User eh keine Wahl. Bei gentoo sieht die Sache ja ähnlich aus (der Vergleich hinkt etwas).
-
GPC schrieb:
Ok, der Mailserver ist n Punkt für dich. Da braucht man ihn wirklich nicht.
Auf einem Datenbank-Server, Router, uswusf auch nicht.
Genausowenig wie auf einer 0815-Workstation, an der man Office-Anwendungen verwendet, E-Mails verschickt, oder VOIP-telefoniert.nman schrieb:
Stimmt, aber mir ist das Source-Format am liebsten, nicht nur wegen der Größe.
Hm? Dir sind 32 MB Firefox Sourcen lieber als 8 MB Binary? Das verstehe ich jetzt nicht.
-
So,
und nun wieder von mir was:
[slider@localhost slider]$ g++ --version
bash: g++: command not foundHat er also nicht gefunden. Also werde ich es wohl auch nicht drauf haben. Zu meine Linuxversion: Kommt bald Mandriva 10.2. Und wenn ich dann richtig drin bin moechte ich auf Debian wechseln.
Wo bekomme ich also das Programm her? Ich schaetz von der HP, aber so, wie ich da ein bisschen zwischengeguckt habe gibs da kein Paket fuer Linux Mandrake 9.1
Aja, wenn C++ in Maschienensprache gespeichert wird, welche Dateiform nimmt es dann in der compilten Sprache an?
Engelsblut
-
Engelsblut schrieb:
Aja, wenn C++ in Maschienensprache gespeichert wird, welche Dateiform nimmt es dann in der compilten Sprache an?
Hi,
Linux legt (fast immer) keinen Wert auf Dateiendungen. Programme heißen daher einfach 'programm' und werden wenn sich nicht im Pfad liegen mit ./programm ausgeführt.Die *.sh Dateien sind häufig Shellscripte. Das sind Textdateinen die durch sh interpretiert werden. Solche Scripte kann man einfach mit einem Editor bearbeiten. In der ersten Zeile steht dann meist welches Programm das Ding interpretieren soll (nach dem #!)
Bzgl. dem g++: Gibt es bei Mandrake nicht irgendeine Packetverwaltung? RPMDrake oder so? Da müsste man einfach das entsprechende Packet auswählen und installieren können.
MfG
Alexander Sulfrian
-
Engelsblut schrieb:
Wo bekomme ich also das Programm her? Ich schaetz von der HP, aber so, wie ich da ein bisschen zwischengeguckt habe gibs da kein Paket fuer Linux Mandrake 9.1
http://rpmfind.net/linux/RPM/mandrake/GByName.html
Aja, wenn C++ in Maschienensprache gespeichert wird, welche Dateiform nimmt es dann in der compilten Sprache an?
der quelltext wird als text gespeichert, aber das compilierte ist in maschinensprache.
-
Ja, gibt es und ich habe mich auch da mal umgeschaut und festgestellt, dass mir das alles nichts bringt, wenn ich nicht den Namen des Packetes habe.
Wie hast das Packet, was ich brauche. Ich habe dort eine ganze Menge an Parketen, die ich installieren kann.
Engelsblut
.:edit:.
Ach du heiliges Kanonenrohr! Soviele Dateien! Oha!
-
nman schrieb:
Hm? Dir sind 32 MB Firefox Sourcen lieber als 8 MB Binary? Das verstehe ich jetzt nicht.
Ok ok, ich gebe mich geschlagen
, diesem Beispiel kann ich einfach nichts entgegensetzen.
-
gcc-c++
-
Klappt ebenfalls nicht.
Kann mir wer sagen, welches Paket ich brauche, wenn ich Mandrake 9.1 und "i18h" (was auch immer das heissen mag) habe?
Slider
-
gcc und ggf gcc-c++ sollten schon ok sein.
-
Wie schon gesagt, es klappt nicht. Er erkennt den Befehl g++ nicht.
Jetzt glaube ich was gefunden zu haben. Ich habe es entpackt uns sage jetzt dem Compu, dass er ./configure machen soll. Er startet und meint "keine install-sh oder install.sh gefunden" Was mach ich jetzt? Gibt allen ernstes keine "install-sh oder install.sh"
Das Makefile gibt es.Slider
-
Engelsblut schrieb:
Wie schon gesagt, es klappt nicht. Er erkennt den Befehl g++ nicht.
Nein, diese Pakete sollst Du installieren!