www.mikrocontroller.net

Forum: PC-Programmierung C Einstieg hello.c Problem


Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht 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

#include <stdio.h>

int main(void)
{
printf("hello world!\n");
}


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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wars!!

Danke für die Hilfe!!

Mfg Bouni

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Elias B. wrote:
> Ich nutze übrigens Win XP  MinGW  gcc.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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++...

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Elias B. (bouni)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.