Anfängerproblem - hallo Welt läuft nicht :-(
-
Hallo,
wie schon im Titel geschrieben bin ich blutiger Anfänger. Ich habe vor Kurzem mit c++ angefangen (unter Win mit VC). Hab mir da n' Kurs reigezogen. Nun wolltee ich das auch mal unter Linux ausprobieren..., wie erwartet gig da natürlich gar nichts. Angestellt habe ich das so:
OS: SuSE 9.1 Pro
Als root angemeldet1. Anjuta starten
2. Datei/Neues Projekt
Da geht dann der "Application Wizard an
3. Bei Project Type "Generic/Terminal Project" gewählt
4. Bei Basic Infomation: Project Name: Test5, Programming Language: C++, Target Type: Executable target
5. Die weiteren Fentser hab ich ohne Änderungen gelassen
6. Nach Klick auf "finish" kommt schon der erste Fehler
"ERROR: The Project was not successfully auto generated. Please run autogen. sh manually"
7. Nach Klick auf OK: Der nächste Fehler: "Unable to create file:/root/Projects/Test5/setup-gettext. System: No such file or directory"
8. Nach Klick auf OK: der geliche Fehler wie unter 7Nun hab ich da ein Fenster mit der int Main():
/* Created by Anjuta version 1.0.0 */ /* This file will not be overwritten */ #include <stdio.h> int main() { printf("Hello world\n"); return (0); }
Und jetzt meine Fragen:
1. ist das nicht C was da steht
2. wie mache ich daraus nun eine executable
3. im Linken Fenster - scheint sowas wie'n Projekt- Fenster zu sein - heist die Datei "mein.c" ist doch wieder C und nicht C++.. oder?
-
ja, es ist c
einfach eine shell öffnen, und per hand kompilieren:
vorher einfach mal schaun:
man gcc
-
Zum kompilieren bei C:
gcc -o programm programm.c
CPP:
g++ -o programm programm.cpp
Es geht auch
gcc -p programm programm.cpp
da gcc die extension *.cpp erkennt und dann g++ nimmt.
-
hallöchen,
danke erstmal für die schnellen Antworten.
Also ich wollte nur in c++ entwickeln.
in dem Verzeichnis, wo mein Projekt liegt, habe ich leider nur test4.c Kann ich das dann auch wie für c++ kompelieren.
ich habe herausgefunden, das man auch ein Projekt für c UND c++ anlegen kann. Dann habe ich Dateien mit der Endung .cc . Aber cpp - Dateien hab ich noch garkeine gesehen
Gibs denn keine IDE, mit der man ordentlich C++ entwicklen kann?
Achso: Wenn ich im Menü "Build" auf "Build" gehe, dann zeigt das Debuggerfenster an, das dies oder jenes wohl für c/c object gültig sei, aber für c++ nicht. Am Ende meint er "compiled succsessfull". Aber im Projektverzeichnis sind weiterhin nur .c .o .prj - Datieen. Von einer Executable hab ich noch nichts gesehen.
-
nimm doch erstmal nen editor, tipp dein programm per hand ein, lege es in einen ordner deiner wahl und kompiliere es per hand.
-
Ich dachte du hast schon in C++ programmiert?da hättest du festellen müssen,das dieser Quelltext ein C-Programm ist und kein C++.
mach es so:#include <iostream> using namespace std; int main(){ cout << "Hallo Welt\n"; cin.get(); return 0; }
speichere es mit der Endung .cpp
und compilieren kannst du es dann so:g++ -o programm programm.cpp
-
ohne editor tippe einfach dies ein:
cat>Hallo_Welt_Programm.cpp //return
#hier tippst du dein Quelltext rein...
#nach den beenden einfach wie oben mit dem entsprechenden dateinamen compilieren....
-
ich glaub ich bin n bissl blöd für Linux. Aber zu meinen Gunsten steht, dass ich erst seit 2 Wochen c++ lehrne
Und noch dazu VC++ verwähnt :-))
also ich hab jetzt 'ne Datei namens "test9.cpp" und in der steht folgendes:
#include "iostream.h" int main() { cout << 'Hello world'; return 0; }
so, dann kompeliere ich das per Hand: g++ -o test test9.cpp
Der Compiler schmeist dann folgendes raus:
linux:~/Projects/test9/src # g++ -o test main.cpp In file included from /usr/include/g++/backward/iostream.h:31, from main.cpp:1: /usr/include/g++/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated. main.cpp:6:17: warning: character constant too long for its type linux:~/Projects/test9/src #
Oh Wunder oh Plunder, da bekomme ich sogar ne Executable. Aber da kann ich klicken (KDE) oder auch tippen (Terminal), da passiert gar nichts
wat'n da los
-
so, jetzt sieht mein Code (wenn man das so nennen darf) so aus:
#include <iostream> using namespace std; int main() { cout << "Hello World" << endl; return 0; };
kompeliert: g++ -o test main.cpp
jetzt kommen keine Fehler mehr raus. Aber wenn ich das executable aufrufe
-
Um deinen Satz weiterzuführen.
gibt es mir auf der Konsole "Hello World" aus.
-
Aber wenn ich das executable aufrufe
was sagt er genau? Versuch das Programm mal aus der Konsole aufzurufen ( ./test )
wrf
-
ups... keine Ahnung warum der Satz nur noch halb da ist..
Also da kann ich im KDE drauf klicken wie ich will, oder in der Konsole test eingeben wie ich will, da passiert gar nicht
-
Im KDE wird auch nix passieren, da Du etwas an die Standardausgabe schickst.
Der Code gibt auf der Shell Deines Vertrauens "Hello World" aus. Du weißt, dass Du **./**test schreiben musst?
Grüssle
-
wasrum denn ./test ? dachte wenn man das kompeliert sind das normale executables ?
-
Sinds doch auch. ./ kommt davor, wenn das aktuelle Verzeichnis nicht im Suchpfad (PATH) ist.
-
ohh... hab ich mir dann auch gedacht, das das was mit dem dateisystem zu tun haben muss. entschuldige bitte meine dumme frage. Aber 5 jahre DOS und 15 Jahre Windows .... da muss man einfach manchmal so sachen fragen
So, na dann hoff ich mal, dass es für leichtere (Terminal)- Sachen so weiter geht.
Was mich nun natürlich brennend interessieren würde: Wenn ich jetzt mit Fenstern und Controls arbeiten will, muss ich wahrscheinlich mit GTK arbeiten. Wie geht dass denn vorsich unter Linux. Unter Windows wird einem das ja praktisch mit der Oberflächenentwicklung in den Schoss gelegt... Nun hab ich 15 Jahre Programmiererfahrung mit BASIC (VB und seit 3 Jahren PureBasic). Bin auch fitt mit der WinAPI. Aber wie geht das denn unter Linux und dann noch mit C++?
-
-
ok, wenn ich das nu richtig verstanden habe, ist GTK nur für C. Was ist mit GTK+? Oder ist das das selbe.
Und wenn ich "ordentlich" fürs KDE entwickeln will, und zwar mit c++, muss ich also QT verwenden. Wie siehts denn mit dem Umfang an Steuerelementen und deren Funktionalitäten aus? Es macht mir den Anschein, als würde GTK(+) da mehr bieten??(Übrigens, danke für eure Gedult)
-
Hallo,
ok, wenn ich das nu richtig verstanden habe, ist GTK nur für C. Was ist mit GTK+? Oder ist das das selbe
Ja. Gtkmm ist für C++. Zu deinen anderen Fragen schau mal hier:
http://www.c-plusplus.net/forum/viewtopic.php?t=63291&highlight=framework+geeignet
-
GTK nur für C
Also ich weiss nich wie du es jetzt meinst.Natürlich kannst du mit jedem C++ Kompiler einen C-Quellencode kompilieren, C++ ist ja übermenge von C.
Ich persönlich habe mich kaum mit GTK beschäftigt (eingentlich nur mit QT), aber so weit ich weiss lässt sich GTK in OOP-Programmen schwer verwenden, es geht eher um OOP als um C++.Wie siehts denn mit dem Umfang an Steuerelementen und deren Funktionalitäten aus?
KDE basiert komplett auf QT also kannst du es sehen. Du hast wohl KDE ??
QT ist leider etwas kompliziert beim kompilieren.
QT im gegensatz zu GTK, ist leider nicht frei, mich persönlich stört es nicht weil nur hobby programierer bin, aber man soll sich daüber im klaren sein.
[OFFTOPIC]Bist du strgalt aus dem PureBasic forum ?[/OFFTOPIC]
-
Marcin schrieb:
Ich persönlich habe mich kaum mit GTK beschäftigt (eingentlich nur mit QT), aber so weit ich weiss lässt sich GTK in OOP-Programmen schwer verwenden, es geht eher um OOP als um C++.
In C++-Programmen verwendet man nicht GTK+ (C) sondern GTKmm (C++).
QT im gegensatz zu GTK, ist leider nicht frei, mich persönlich stört es nicht weil nur hobby programierer bin, aber man soll sich daüber im klaren sein.
Blödsinn, QT ist - zumindest unter Unix - OpenSource.
Die Funktionalität von GNOMEmm/ GTKmm und den kdelibs bzw QT ist nahezu exakt die gleiche; im Regelfall tendiere ich für meinen Teil allerdings dazu, GTKmm zu verwenden da es einfach schöner ist als QT.