C Einstieg hello.c Problem

#834585
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.
Gast #834589
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"
Persönliche Seite #834753
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
Gast #835147
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++...
Gast #835628
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren