ubuntuusers.de

Probleme mit kompilieren des ersten C Programms

Status: Gelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

donnerkai

Anmeldungsdatum:
13. November 2010

Beiträge: 104

Hallo,

ich möchte mir gerne selber das Programmieren in C beibringen und wollte damit jetzt starten. Schon gibt es die ersten Probleme. Ich habe das bekannte Hello World Programm im Texteditor geschrieben und mit cc- o test test.c kompiliert. Es wird mir auch ein Programmsymbol auf dem Desktop angelegt. Leider kann ich das Programm jedoch nicht starten. Es passiert einfach nichts. Weder über den Klick auf das Symbol, noch über die Eingabe es Progs im Terminal. Der Programmcode ist:

#include <stdio.h> main(){ printf("Hello World \n"); }

Wer kann mir helfen?

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5814

Wohnort: Ankh-Morpork

Wo hast du es kompiliert, wie ist die ausgabe von ls -l in dem Ordner und mit welchem Befehl genau hast du versucht es zu starten?

Kurz wie richtig sein müsste:

philipp@sam:/tmp/helloworld$ gcc hello.c 
philipp@sam:/tmp/helloworld$ ls -l
insgesamt 12
-rwxr-xr-x 1 philipp users 6667 31. Mai 11:13 a.out
-rw-r--r-- 1 philipp users   59 31. Mai 11:12 hello.c
philipp@sam:/tmp/helloworld$ ./a.out 
Hello World 

donnerkai

(Themenstarter)

Anmeldungsdatum:
13. November 2010

Beiträge: 104

Ich habe mit cc compiliert, nicht mit gcc. Macht das einen Unterschied? Die Ausgabe von ls -l in dem Ordner zeigt:

1
2
3
4
5
ai@kai-LIFEBOOK-S6420:~/Arbeitsfläche$ ls -l
insgesamt 16
-rwxr-xr-x 1 kai kai 8424 2011-05-31 10:47 test
-rw-r--r-- 1 kai kai   58 2011-05-31 10:47 test.c
kai@kai-LIFEBOOK-S6420:~/Arbeitsfläche$ 

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Das Programm ist doch da! Du musst es halt über eine Shell aufrufen. Da es sicherlich keine GUI besitzen wird, ist doch auch klar, dass es beim Klick über den Desktop nichts sichtbares gibt. Das Programm wird im Hintergrund abgearbeitet. Man kann afair in Desktop-Files angeben, dass ein Programm in einer Konsole gestartet werden soll.

Aber mal ehrlich: Praktischer ist es doch, das ganze über eine Konsole zu starten.

Hefeweiz3n Team-Icon

Moderator, Webteam
Avatar von Hefeweiz3n

Anmeldungsdatum:
15. Juli 2006

Beiträge: 5814

Wohnort: Ankh-Morpork

donnerkai schrieb:

Ich habe mit cc compiliert, nicht mit gcc. Macht das einen Unterschied?

Nein.

Die Ausgabe von ls -l in dem Ordner zeigt:

1
2
3
4
5
ai@kai-LIFEBOOK-S6420:~/Arbeitsfläche$ ls -l
insgesamt 16
-rwxr-xr-x 1 kai kai 8424 2011-05-31 10:47 test
-rw-r--r-- 1 kai kai   58 2011-05-31 10:47 test.c
kai@kai-LIFEBOOK-S6420:~/Arbeitsfläche$ 

Dann mach doch mal ein ./test in dem ordner auf der Konsole. Du wirst sehen: Das funktioniert 😉.

donnerkai

(Themenstarter)

Anmeldungsdatum:
13. November 2010

Beiträge: 104

Hat funktioniert. Ich dachte ich kann das Programm aufrufen indem ich einfach den Programmnamen eingebe sobald ich mich in dem Ordner befinde. Warum ich ./test eingeben muss ist mir nicht klar aber auf jeden Fall hat es funktioniert ☺

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

donnerkai schrieb:

in dem Ordner befinde. Warum ich ./test eingeben muss ist mir nicht klar aber auf jeden Fall hat es funktioniert ☺

Dann lies doch mal im wiki die Grundlagenartikel über die Shellbenutzung.

Sannaj

Anmeldungsdatum:
30. Oktober 2010

Beiträge: Zähle...

Hier zur Erklärung.

Wenn du das Programm aufrufst sendet es mit dem "printf"-Befehl den Text "Hello World \n" an die Standartausgabe (/dev/stdout) und beendet sich danach. Diese gibt den Text über das Standartausgabegerät aus. Bei Programmen, die über die Graphische Oberfläche aufgerufen werden, ist das Standartausgabegerät aber nicht vorhanden oder irgendwo hinter der Benutzeroberfläche - Programme wie deines laufen daher ohne irgendwelche Spuren zu hinterlassen. Wir das Programm über das Terminal aufrufen, stellt diese das Standartausgabegerät dar und gibt den Text aus.

Antworten |