Hallo, hat schon mal jemand versucht, ein C-Programm unter Windows mit dem GCC zu erstellen? Was muss man installieren? Ich habe aus dem Internet MinGW heruntergeladen. Der GCC lässt sich per Kommandozeile aufrufen, wenn ich etwas kompilierenn will, wird stdio.h nicht gefunden. Gruß, chris
dann suche doch mal ob stdio.h vorhanden ist und setze den include path passend. Neugier: Welchen grund gibt es den gcc für Windows zu verwenden?
chris schrieb: > hat schon mal jemand versucht, ein C-Programm unter Windows mit dem GCC > zu erstellen? Ja das geht. > Ich habe aus dem Internet MinGW heruntergeladen. Der GCC lässt sich per > Kommandozeile aufrufen, wenn ich etwas kompilierenn will, wird stdio.h > nicht gefunden. Mehr siehst du mit -v. Ich hatte Code::Blocks installiert, und da ist GCC dabei. Verwende ich aber nur von der Commandline aus. Johann
chris schrieb: > Hallo, > > hat schon mal jemand versucht, ein C-Programm unter Windows mit dem GCC > zu erstellen? Ja. Mit Erfolg. > Was muss man installieren? Denn gcc selbst. Die glibc. Die w32api. Die binutils. GNU make. > Ich habe aus dem Internet MinGW heruntergeladen. Der GCC lässt sich per > Kommandozeile aufrufen, wenn ich etwas kompilierenn will, wird stdio.h > nicht gefunden. Fehlt da etwa die C Standard Library? Die stdio.h müsste unter \MinGW\include zu finden sein. > Neugier: > Welchen grund gibt es den gcc für Windows zu verwenden? Welchen Compiler denn sonst? :-)
> Welchen Compiler denn sonst? :-)
ich habe gehört das auch MS ein Compiler hat. Den kann man auch
kostenlos laden und man auch auch das passende Windows zeug dabei.
(gilt nur wenn man auch x86 Code erzeugen will und nicht für Atmels
o.ä.)
Es soll auch leute gegebn haben die versucht haben samba für windows zu
bekommen.
Wenn man stets nur unter Windows entwickelt, klar, warum nicht. Wenn man auch mal was schreibt was unter Linux oder aufm Mac laufen soll, bietet es sich halt an den gleichen Compiler auf den verschiedenen Plattformen einzusetzen.
Oder zumindest einen, der sich an Standards hält. Da ist MS ja nicht so stark, solange es nicht die eigenen Standards sind (und selbst da eigentlich nicht). Zumindest habe ich das bis VS2005 verfolgen dürfen; ob es mit 2008 besser geworden ist, weiß ich nicht.
Hallo Alle, vielen Dank für eure Antworten. Es gibt zwei Gründe, warum ich GCC statt den Windoof Compiler verwenden möchte: 1. Ich kann Programme die auf allen Systemen AVR-,ARM,Linux,Windows laufen sollen ziemlich leicht portieren. Ich habe ein Programm geschrieben, welches auf einen Atmega32 läuft und war erstaunt, wie unkomplieziert es war, den selben Code auf einem ARM laufen zu lassen. Jetzt baue ich mir gereade den PC-Emulator dazu, deshalb GCC. Damit die in der Überzahl vorhanden Windows User nicht von dieser Wohltat ausgeschlossen werden, muss also MinGW her. 2. Ich hatte Visual C++ Express installiert und ... die stdio.h war nicht zu finden. Also dachte ich mir, ich nutze MinGW, aber siehe da, auch dort kein stdio.h zu finden ( es liegt nicht am Pfad, ich habe nach der Datei auf dem Rechner gesucht, aber sie ist blos beim AVR-GCC zu finden ). Was ich also wissen muss: in welchem Packet von MinGW ist die stdio.h? Es sind ja einige Packete zu installieren und vielleicht habe ich das mit der stdio.h vergessen. Vielleicht hat mein Windows Rechner auch eine eingebaute stdio.h Unterdrückung eingebaut ... .... könnt Ihr mir noch bei einer weiteren Frage helfen: wie schaffe ich es, dass ich eine Programm nicht in der Kommandshell starten muss um die Ausgabe zu sehen, sondern beim Klick auf das Programm die Kommandshell offen bleibt? Vielen Dank für euere Hilfe, chris
chris schrieb: > 1. Ich kann Programme die auf allen Systemen AVR-,ARM,Linux,Windows > laufen sollen ziemlich leicht portieren. Ich habe ein Programm > geschrieben, welches auf einen Atmega32 läuft und war erstaunt, wie > unkomplieziert es war, den selben Code auf einem ARM laufen zu lassen. > Jetzt baue ich mir gereade den PC-Emulator dazu, deshalb GCC. Das Argument ist nicht zu unterscätzen. Komplexe Algorithmen schreibe ich so, daß es sowohl für einen AVR als auch für PC übersetzbar ist aus der gleichen Quelle. Bei komplizierten Berechnungen oder massenweise Anfallenden Daten kann man diese dann sehr gut analysieren, visualisieren, etc. Mit einem Simulator geht das nicht, da wird man einfach von der Datenflut erschlagen und ist im AVR "eingesperrt", obwohl das Programm aufm PC läuft. Wenn schon PC, dann richtig! > 2. Ich hatte Visual C++ Express installiert und ... die stdio.h war > nicht zu finden. > > Also dachte ich mir, ich nutze MinGW, aber siehe da, auch dort kein > stdio.h zu finden ( es liegt nicht am Pfad, ich habe nach der Datei auf > dem Rechner gesucht, aber sie ist blos beim AVR-GCC zu finden ). > > Was ich also wissen muss: in welchem Packet von MinGW ist die stdio.h? > Es sind ja einige Packete zu installieren und vielleicht habe ich das > mit der stdio.h vergessen. >>> MinGW, a contraction of "Minimalist GNU for Windows", >>> is a port of the GNU Compiler Collection (GCC), and GNU Binutils, >>> for use in the development of native Microsoft Windows applications. Von libc/libm steht da nix. Ich hab das wie gesagt mit Code::Blocks gelöst. In dem Moment Overkill, aber bei der dortigen MinGW-Distro ist dann alles dabei, und man kann sogar easy GUI-Anwendungen proggen wenn man das will. Johann
> Ich kann Programme die auf allen Systemen AVR-,ARM,Linux,Windows > laufen sollen ziemlich leicht portieren Was hat das denn mit dem compiler zu tun. Ich verwende unter windows den MS compiler und unter linux den GCC, mal hat der eine eine bessere warnung mal der andere aber ich musste noch nie beim Programmieren auf den Compiler rücksicht nehmen, ich schreibe C++ und beiden Compiler nehmen es.
#include <inttypes.h> nein gibt es nicht, ms hat dafür die typen _int32 _int64 usw. Muss aber auch sagen das ich die speziellen type noch nie in einem normale PC-Programm verwendet haben, da nehme ich immer int. bzw size_t u.ä. Das hat aber erstmal nicht mit dem compiler zu tun sondern mit der Umgebung. Das man da etwas anpassen muss ist selbstversändlich. Dafür hat MS ein sehr gute doku.
>Muss aber auch sagen das ich die speziellen type noch nie in einem >normale PC-Programm verwendet haben, da nehme ich immer int. bzw size_t >u.ä. Genau darum geht es. Wenn man Programme zwischen PC und Mikrocontroller austauschen will, braucht man die inttypes. Ohne sie zu programmieren ist bei Embedded Systemen imho Schrott.
chris schrieb:
> Was ich also wissen muss: in welchem Packet von MinGW ist die stdio.h?
Sie ist in dem Paket mingwrt-3.15.2-mingw32-dev.tar.gz enthalten.
Vielen Dank, Mark. Mittlerweile habe ich wie von Johann L. weiter ober vorgeschlagen "CodeBlocks" installiert. Zwar habe ich wieder eine Stunde gebraucht, weil Code Blocks die Pfade zu MinGW in seinem Verzeichnis nicht richtig setzt und es etwas schwierig ist, in den tiefen der Menüs die Pfadeinstellung zu finden. Jetzt läuft es und ich freue mich :-) Allerdings gibt es wie immer einen Wehrmutstropfen: Wenn man mit printf etwas auf die Linux-Console ausgibt, kann man sogenannte "Escape"-Sequenzen benutzen, um die Farben und die Cursorpostion zu verändern. Eigentlich bin ich davon ausgegangen, dass das für die Windowskommandshell auch gilt. Leider scheint es nicht so zu sein, es erscheinen die Hiroglyphen der Escapesequenzen auf dem Bildschirm. Was kann ich am besten tun? Ich möchte das Programm für Win- und Linux kompilieren und zwar möglichst ohne dass ich den Code ändern muss.
chris schrieb: > Allerdings gibt es wie immer einen Wehrmutstropfen: Wenn man mit printf > etwas auf die Linux-Console ausgibt, kann man sogenannte > "Escape"-Sequenzen benutzen, um die Farben und die Cursorpostion zu > verändern. Deine Linux-Konsole ist ja auch ein vollwertiges 'Terminal'. Das ist für sowas gemacht. > Eigentlich bin ich davon ausgegangen, dass das für die > Windowskommandshell auch gilt. Ne, das Windows-Dingen ist einfach nur Scheiße :-> Mit dem richtigen Dos-Prompt kann man auch Farben benutzen, das weiß ich noch aus TurboPascal-Zeiten. Ob das heute geht...wer weiß. > Was kann ich am besten tun? Ich möchte das Programm für Win- und Linux > kompilieren und zwar möglichst ohne dass ich den Code ändern muss. Unter Linux benutzt du bitte ganz dringend eine Bibliothek, etwa ncurses oder termcap. Diese Steuersequenzen sind nämlich nicht unbedingt überall gleich; ncurses/termcap abstrahieren das ein wenig und verwenden automatisch die passenden Sequenzen. Ncurses kann ansonsten auch noch einige nette Dinge...
chris schrieb: > Vielen Dank, Mark. > > Mittlerweile habe ich wie von Johann L. weiter ober vorgeschlagen > "CodeBlocks" installiert. > Zwar habe ich wieder eine Stunde gebraucht, weil Code Blocks die Pfade > zu MinGW in seinem Verzeichnis nicht richtig setzt und es etwas > schwierig ist, in den tiefen der Menüs die Pfadeinstellung zu finden. Pfade brauchst du eigentlich keine, du kannst GCC auch direkt aufrufen mit (absolutem) Pfad, zB bei mehreren parallelen Versionen auf dem System. Oder eben eintragen in die PATH-Variable irgendwo in Arbeitsplatz->Einstellungen->Erweitert->Umgebungsvariablen > Allerdings gibt es wie immer einen Wehrmutstropfen: Wenn man mit printf > etwas auf die Linux-Console ausgibt, kann man sogenannte > "Escape"-Sequenzen benutzen, um die Farben und die Cursorpostion zu > verändern. Eigentlich bin ich davon ausgegangen, dass das für die > Windowskommandshell auch gilt. Leider scheint es nicht so zu sein, es > erscheinen die Hiroglyphen der Escapesequenzen auf dem Bildschirm. Das ist keine Sache des Compilers, sondern des Terminals. Wenn es das nicht darstellt, geht's eben nicht. Da bringt's auch nicht, den printf-String per Syntax-Highloght rot zu machen, die Ausgabe wird trotzdem nicht rot fg. > Was kann ich am besten tun? Ein Terminal verwenden, das das kann oder auf so'n Schnickes verzichten oder (ohne Garantie)
1 | #if defined(__WIN32__) || (defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__))
|
Johann
>Das ist keine Sache des Compilers, sondern des Terminals. Wenn es das >nicht darstellt, geht's eben nicht. Das war ja auch nicht die Frage. >Ein Terminal verwenden, das das kann oder auf so'n Schnickes verzichten Echt? Dann versuch mal den Norten Commander ohne diesen "Schnickes" zu programmieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.