Forum: PC-Programmierung C Einstieg hello.c Problem


von Elias B. (bouni)


Lesenswert?

Moin Leute,

Ich bin grade am rumspielen mit C.

Hab mir das Buch C Programmieren von Anfang an geholt.
Soweit sogut, hab die hello world.c abgetippt und compiliert.
Ich nutze übrigens Win XP  MinGW  gcc.

Ich compiliere folgenden code:

hello.c
1
#include <stdio.h>
2
3
int main(void)
4
{
5
printf("hello world!\n");
6
}

Compiliert eird mit folgender Zeile:

F:\MinGW\bin\gcc.exe -c F:\C-Programme\hello.c -o F:\C\hello.exe

Ich bekomm auch ohne Fehlermeldungen eine exe hin, aber wenn ich die im 
cmd fenster aufrufe bekomme ich keine Ausgabe von "hello world!"!?


Kann Mir einer meinen Fehler sagen den Ich mache ??



Mfg Bouni


P.S.: Ich hab schon ca. ne stunde gegoogelt / im Forum gesucht aber nix 
gefunden.

von Sven P. (Gast)


Lesenswert?

VORSICHT:

Compiler-Schalter "-c", lass den weg

So.. Erklärung:

gcc ist Compiler und Linker und Assembler und so weiter in einem (GCC = 
GNU Compiler Collection). So funktionierts:

"gcc -c blabla.c" compiliert eine Quelldatei (ASM, C, C++, is egal) und 
erzeugt eine Objektdatei (typischerweise blabla.o, durch dein "-o" wurd 
der Standardname aber überschrieben). Die kannst du dir vorstellen, wie 
ein Stück Programm, bei dem aber sämtliche Aufrufe von Funktionen usw. 
noch in der Wildnis landen, also noch nicht möglich sind. Der Sprung zu 
main() ist eben auch nicht möglich (der zu printf auch nicht, davon mal 
abgesehen), deshalb wird nix angezeigt bei dir.

Deshalb musst du nun diese Objektdatei (oder Objektdateien, je nach dem, 
wie viele du hast) noch zusammenlinken. Dabei werden die 
Funktionsaufrufe "zurechtgebogen", also landen nicht mehr irgendwo, 
sondern dort, wo auch der richtige Code im Speicher steht. Das ist das 
Prinzip von DLLs (wie sie bei Windows heißen).
Das Linken passiert so:

"gcc -o programm.exe obj1.o obj2.o ..."


Einfacher gehts aber (wenn du z.B. nur eine C-Quelldatei hast), indem du 
alles in einem Rutsch machen lässt:
"gcc -o programm.exe blabla.c"

von Elias B. (bouni)


Lesenswert?

Das wars!!

Danke für die Hilfe!!

Mfg Bouni

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo,
verwendest du Visual C++ Express Edition von Microsoft???
Bei dem musst du nur, wenn du ein neues Projekt und so gestartet hast 
und dein Programm im Fenster eingetippt hast, auf das kleine grüne 
Dreieck oben klicken, und der Compiler macht alles. Nun noch über die 
Kommandozeile starten, und dann sollte es eigenltich gehen.
Übrigends: Das Buch C Programmieren von Anfang an ist Klasse, gell???
Gruß, Steffen

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Elias B. wrote:
> Ich nutze übrigens Win XP  MinGW  gcc.

von Sven P. (Gast)


Lesenswert?

Steffen O. wrote:
> Übrigends: Das Buch C Programmieren von Anfang an ist Klasse, gell???
> Gruß, Steffen

Ja, ist es. Aber für Anfänger ist Microsoft Visual C++ der absolute 
Overkill (isses zwar auch für Profis, aber das sei mal dahingestellt). 
Schöne, kleine, portable Programme schreibt man nicht mit VC++...

von Steffen O. (derelektroniker) Benutzerseite


Lesenswert?

Hallo,
ja, sorry, ich habe das schlichtweg überlesen, das er den Win XP  MinGW 
gcc Compiler verwendet.
Aber ich habe auch mit dem Visual Studio C++ angefangen, und finde die 
Entwicklungsumgebung und alles andere ist sehr angenehm zum Bedienen, 
und einfach zum Lernen. Ich bin von Anfang an sehr gut damit 
klargekommen.
Gruß, Steffen

von Elias B. (bouni)


Lesenswert?

Hi,

Ich hasb seit dem WE ein EEE mit xubuntu drauf, unter Linux ist es so 
viel einfacher mal eben was zu proggen!!

Da ist alles schon dabei, und was fehlt wird eben per apt nachgeladen 
(gesetzt dem Fall es ist im pool).



Mfg Bouni

von Rolf Magnus (Gast)


Lesenswert?

> gcc ist Compiler und Linker und Assembler und so weiter in einem (GCC =
> GNU Compiler Collection).

Eigentlich ist es nur der Compiler, kann aber als Frontend für die 
anderen Tools verwendet werden. Der Linker und der Assembler gehören 
eigentlich zu einem anderen Softwarepaket (binutils).

> "gcc -c blabla.c" compiliert eine Quelldatei (ASM, C, C++, is egal) und

> Einfacher gehts aber (wenn du z.B. nur eine C-Quelldatei hast), indem
> du alles in einem Rutsch machen lässt:
> "gcc -o programm.exe blabla.c"

Hier ist es allerdings nicht mehr egal, in welcher Sprache die 
Quelldatei ist. Für den Compiler ist es das zwar immer noch (der erkennt 
das an der Endung des Dateinamens), aber für den Linker ist es nicht 
egal.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.