Kompilieren < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:51 Mi 27.04.2011 | Autor: | David90 |
Aufgabe | Programmiere das Programm Hello World |
Hallo, also ich hab irgendwie ein Problem beim kompilieren meiner datei, Also die aufgabe ist dass ich ein prog schreiben soll, das auf dem bildschirm die worte "hello world" ausgibt. so meine datei hab ich mit gedit geschrieben mit linux (ubuntu) und sie sieht so aus:
#include <stdio.h>
int main ()
printf("hello world");
{
return 0,
}
das hab ich abgespeichert und jetz wollte ich die datei im terminal kompilieren mit dem befehl gcc -o wall HelloWorld(so heißt die Datei).out HelloWorld.c aber ich bin mir mit dem out und dem c nicht sicher weil hinter dem dateinamen auch kein c steht...
kann mir jemadn helfen?
Danke schon mal
gruß david
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:08 Do 28.04.2011 | Autor: | chrisno |
Da sonst niemand antwortet:
Nenne Deine Datei um, so dass sie HelloWorld.c heißt. Dann gibt das Kommando zum Kompilieren. Probeir einfach aus, Du wirst den Rechner dabei nicht ruinieren.
Für die Details ist meine kurze Begegenung mit C zu lange her.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 21:56 Do 28.04.2011 | Autor: | David90 |
schade ich dachte hier beschäftigen sich noch viele mit c xD habs umbenannt, und habs mit gcc kompiliert...aber wenn ich jetzt den namen Helloworld.c eingeben und enter drücke um das prog auszuführen steht da nur: no command found :( voll dumm weil mir beim kompilieren kein error angezeigt wird, mein prog also richtig is :(
hat jemand vllt dazu eine idee?:(
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:55 Do 28.04.2011 | Autor: | chrisno |
Bewirkt dein Kommando, dass ein "Executable" erzeugt wird? Oder musst Du noch ein weiteres Kommando eingeben? (Link?) Geht es mit make?
(Wie geagt, das ist alles so lange her.)
Wie heißt die Datei, die der Compiler erzeugt hat? Ob sie neu ist, erkennst Du am Datum.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:09 Do 28.04.2011 | Autor: | felixf |
Moin!
> schade ich dachte hier beschäftigen sich noch viele mit c
> xD habs umbenannt, und habs mit gcc kompiliert...aber wenn
> ich jetzt den namen Helloworld.c eingeben und enter drücke
> um das prog auszuführen steht da nur: no command found :(
> voll dumm weil mir beim kompilieren kein error angezeigt
> wird, mein prog also richtig is :(
In deinem gcc-Befehl hier heisst die Ausgabedatei HelloWorld.out. Du musst also nicht HelloWorld.c starten, sondern HelloWorld.out. Und da das aktuelle Verzeichnis vermutlich nicht zum Pfad gehoret (ich vermute du bist unter Linux oder einem sonstigen unixoiden Betriebssystem), musst du ./HelloWorld.out eingeben um das Programm zu starten (bzw. sonst den Pfad angeben wo sich HelloWorld.out befindet).
Wenn du das Programm uebrigens so wie in der ersten Frage geschrieben hast, konnte es sicher nicht kompiliert werden.
LG Felix
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:11 Do 28.04.2011 | Autor: | felixf |
Moin David!
> Programmiere das Programm Hello World
> Hallo, also ich hab irgendwie ein Problem beim kompilieren
> meiner datei, Also die aufgabe ist dass ich ein prog
> schreiben soll, das auf dem bildschirm die worte "hello
> world" ausgibt. so meine datei hab ich mit gedit
> geschrieben mit linux (ubuntu) und sie sieht so aus:
>
> #include <stdio.h>
>
> int main ()
Diese beiden Zeilen:
> printf("hello world");
> {
sollten schnellstens ihre Reihenfolge aendern, ansonsten wird das nichts.
> return 0,
Und hier sollte kein Komma, sondern ein Semikolon stehen.
> }
>
> das hab ich abgespeichert und jetz wollte ich die datei im
> terminal kompilieren mit dem befehl gcc -o wall
> HelloWorld(so heißt die Datei).out HelloWorld.c aber ich
Na, sicher nicht. Du hast hoffentlich
> gcc -Wall -o Helloworld.out HelloWorld.c
eingegeben. Ansonsten wird eine Ausgabedatei names "wall" erzeugt, und der Compiler wird sich beschweren, dass er die Eingabedatei HelloWorld.out nicht findet.
> bin mir mit dem out und dem c nicht sicher weil hinter dem
> dateinamen auch kein c steht...
Der Quellcode muss schon HelloWorld.c heissen. Die ausfuehrbare Datei heisst dann HelloWorld.out, wenn du das so eingibst wie ich es geschrieben hab.
LG Felix
|
|
|
|
|
Hallo!
Sollte die Benutzung einer Endung nicht egal sein? Natürlich sollte man sie, wenn vorhanden, auch dem GCC mitgeben, weil er sonst die Datei nicht findet. Aber kolt der sich irgendwelche Infos aus der Endung?
(Dennoch sollte man Endungen IMMER verwenden, speziell, da sich später zu fast jeder .c-Datei noch eine .h-Datei gleichen Namens gesellen wird)
Nochwas:
Mit dem Befehl ll kann man sich alle Dateien im Verzeichnis anzeigen lassen. Welche davon ausführbar sind, erkennt man an dem x in
-rwxr-xr-x
Das sollte nur für die erzeugte ausgabedatei gesetzt sein. (Und die Datei wird deshalb vermutlich auch farblich hervorgehoben)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:32 Fr 29.04.2011 | Autor: | felixf |
Moin,
> Sollte die Benutzung einer Endung nicht egal sein?
> Natürlich sollte man sie, wenn vorhanden, auch dem GCC
> mitgeben, weil er sonst die Datei nicht findet. Aber kolt
> der sich irgendwelche Infos aus der Endung?
doch, die Endung ist wichtig. Es gibt da naemlich einen Parameter -x, und aus der manpage-Beschreibung dessen:
1: |
| 2: | -x language
| 3: | Specify explicitly the language for the following input files
| 4: | (rather than letting the compiler choose a default based on the
| 5: | file name suffix). This option applies to all following input
| 6: | files until the next -x option. Possible values for language are:
| 7: |
| 8: | c c-header c-cpp-output
| 9: | c++ c++-header c++-cpp-output
| 10: | objective-c objective-c-header objective-c-cpp-output
| 11: | objective-c++ objective-c++-header objective-c++-cpp-output
| 12: | assembler assembler-with-cpp
| 13: | ada
| 14: | f77 f77-cpp-input f95 f95-cpp-input
| 15: | java
| 16: |
| 17: | -x none
| 18: | Turn off any specification of a language, so that subsequent files
| 19: | are handled according to their file name suffixes (as they are if
| 20: | -x has not been used at all). |
Ohne Endung muss man also explizit sagen, was es fuer eine Datei ist.
> (Dennoch sollte man Endungen IMMER verwenden, speziell, da
> sich später zu fast jeder .c-Datei noch eine .h-Datei
> gleichen Namens gesellen wird)
Ja, das eh
> Nochwas:
>
> Mit dem Befehl ll kann man sich alle Dateien im Verzeichnis
> anzeigen lassen. Welche davon ausführbar sind, erkennt man
> an dem x in
>
> -rwxr-xr-x
>
> Das sollte nur für die erzeugte ausgabedatei gesetzt sein.
> (Und die Datei wird deshalb vermutlich auch farblich
> hervorgehoben)
Falls man kein ll-Alias hat oder keine Farben erscheinen, kann man auch manuell mit "ls -l --color" nachhelfen Bei Ubuntu ist das aber normalerweise voreingestellt, dass es funktioniert.
LG Felix
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:48 Di 03.05.2011 | Autor: | David90 |
Ok Leute, also nochmal (hab übrigens eure ganzen tipps ausprobiert und nichts hat geklappt :( z.B. wenn ich ./ vor die datei schreibe die ich ausführen will sagt er mir bash ./:is a directory -.-)
also ich habs nochmal neu geschrieben, in meiner ersten Frage hatte ich nur n paar tippfehler drin xD
also ich schreib mit gedit folgendes:
#include <stdio.h>
int main()
{
printf ("hello world [mm] \n");
[/mm]
return 0;
}
so das speicher ich unter dem namen Helloworld.c ab
dann gehe ich mit cd ins richtige verzeichnis und kompiliere die datei mit dem befehl: gcc -Wall -o Helloworld.out Helloworld.c und enter (es kommt keine fehlermeldung, also ist mein prog richtig)
jetzt hat er eine datei Helloworld.out erstellt, die ich ausführen kann
so ich hab jetz auch nochmal überprüft ob ich im richtigen verzeichnis bin
ich gebe den befehl Helloworld.out ein und es kommt die sch*** fehlermeldung : command not found
ich verstehs einfach nich-.- bin am ende mit meiner weisheit...woran kann das liegen?:( mit ubuntu und dem editor gedit und so muss ich doch in der lage sein ein einfaches prog schreiben zu können oder nicht?:O muss ich etwa noch iwas installieren?:(
bitte dringend um rat:(
danke schon mal
gruß david
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:33 Di 03.05.2011 | Autor: | felixf |
Moin!
> Ok Leute, also nochmal (hab übrigens eure ganzen tipps
> ausprobiert und nichts hat geklappt :( z.B. wenn ich ./ vor
> die datei schreibe die ich ausführen will sagt er mir bash
> ./:is a directory -.-)
Naja, hast du ein Leerzeichen nach ./ eingefuegt? Dann ist das kein Wunder...
> ich gebe den befehl Helloworld.out ein und es kommt die
> sch*** fehlermeldung : command not found
> ich verstehs einfach nich-.- bin am ende mit meiner
Du musst auch ./Helloworld.out eingeben. Ohne Leerzeichen.
LG Felix
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:39 Mi 04.05.2011 | Autor: | David90 |
jaaaaaaaaaaaaaaaaaaa danke hat geklappt:) kann das prog jetzt ausführen:) danke dir, war voll verzweifelt^^ dann kann ich ja jetz losprogrammieren xD
hab noch eine frage weil ich will ja auch wissen was die verschiedenen befehle bedeuten:
wieso schreibt man immer int vor das main...also ich weiß dass int für integer steht, also für eine ganze zahl, aber was bedeutet das? etwa dass nur ganze zahlen in der funktion vorkommen oder was? xD
|
|
|
|
|
Hallo!
Nein, das wäre ja recht seltsam.
Eine Funktion kann einen Wert zurück geben, und dieser Wert kann z.B. ein INT oder DOUBLE sein. Genau das wird mit dem bezeichner vor der Funktion festgelegt. Beispiel:
double f(double x){
return x*x;
}
int main(){
double ergebnis;
ergebnis=f(5);
cout << "Fünf zum Quadrat ist " << ergebnis << endl;
return 0;
}
Oft geben funktionen ein INT zurück, mit dem sie melden, ob es z.B. einen Fehler gab. Eine 0 steht dann für "Alles bestens!"
Die main() gibt auch eine Zahl zurück, und zwar an das aufrufende Programm. Aber davon merkst du meistens nix. Aber stell dir vor, du hast ein Script, welches Dateien auf deinem Rechner verschiebt oder kopiert, und das dafür das cp-Programm benutzt. Das script kann dann erkennen, ob das Kopieren erfolgreich war, oder nicht, je nachdem ob das cp ne 0 oder was anderes zurück gegeben hat.
Eine Funktion MUSS übrigens nichts zurückgeben. Dann schreibt man ein void davor.
|
|
|
|