Wahl des Compilers
-
Hallo,
ich komme so aus der Firmwareentwicklerrichtung, d.h. Microcontroller programmieren etc. Ich habe aber in meinem Leben noch nicht eine einzige .exe programmiert
geschweige denn mit Visual oder Borland etc. gearbeitet, da die die MCUs immer mit ihrer eigenen Entwicklungsumgebung daherkommen.
Daher meine Frage, welchen Compiler ihr mir empfehlen würdet. Mit den ersten Progrämmchen, die ich so schreiben wollte, würde ich gerne Dinge in die Windows-Zwischenablage tun, Dateien umbenennen, solche Sachen..
Achso und teuer solls natürlich auch nicht werden, aber visual is ja 4free und -borland hätt ich wohl irgendwo liegen...VG
Asmodius
-
Ganz einfach.
Unter Linux benutzt du GCC, unter Windows benutzt du Visual C++ Express 2010. Das sind die jeweils besten Compiler auf ihren Systemen.
Apple weiß ich leider nicht.
-
Zu Compiler für Apple:
http://www.c-plusplus.net/cms/modules.php?op=modload&name=Web_Links&file=index&req=viewlink&cid=59
-
Ich find JanJan's Antwort schlecht.
Kommt drauf an was du willst und womit du arbeitest. Wenn du sowieso das Visual Studio als IDE verwenden willst und nur Micrsoft verwendest, dann ja, nimm den MS Compiler.
In jedem anderen Fall: verwende den GCC. Den gibts fuer jedes OS. Und vermutlich hast bei den Microcontrollern auch mit dem gearbeitet. Vorteil: du musst nur einen Compiler kennen lernen (toolchain, Optionen, Moeglichkeiten, Quirks, ...) statt einen pro Plattform, er wird oefter aktualisiert (MS Compiler gibts grad mal 1x alle 2,3 Jahre ein Update) und unterstuetzt mehr vom aktuellen C++0x Standard.Den Borland Compiler solltest du sowieso auf keinen Fall anfassen (sehr alt).
-
Der Compiler von Microsoft produziert für Windows deutlich besseren Code als der GCC.
C++0x ist kein aktueller Standard, er ist noch gar kein Standard.
-
Ich finde Blue-Tigers Antwort eher schlecht
Und den gcc für Windows auch. Die Fehlermeldungen sind miserabel, der Linker braucht ewig und die entstehenden ausführbaren Dateien sind unnötig groß.
Im Vergleich ist der MS-Compiler mindestens doppelt so schnell (selbst wenn der gcc auf Kompiliergeschwindigkeit optimiert und der MS-Compiler auf Programmgeschwindigkeit) und die ausführbaren Dateien sind höchstens halb so groß (selbst wenn der gcc auf Platz optimiert und der MS-Compiler garnicht). Es gibt auch andere Effekte: Wenn ich mit dem gcc auf WinXP kompiliere, dann läuft die exe nicht auf Win7, mit dem MS-Compiler schon.Bei den Updates für den gcc muss ich auch massiv widersprechen. Der aktuelle gcc für Windows ist Version 3.4.5, der wurde 2006 veröffentlicht. Seitdem gibt es nur "release Candidates" die häufig nicht richtig funktionieren (bei mir stürzt gdb sofort nach dem Start ab, gcc 4.4). Und die 3.4.5-Version erlaubt Variablendefinitionen im switch/case, wer weiß was da für Code draus wird.
Meiner Meinung nach wird der gcc für Windows von den Entwicklern sehr stiefmütterlich behandelt und hat einfach nicht die Windows-Kompetenz, die ein Microsoft- oder Intelcompiler haben.
Zu guter Letzt gibt es mit dem MS-Compiler eine IDE die mit "nur" 60MB RAM läuft, und im Gegensatz zu Eclipse in annehmbarer Zeit startet. Mit etwas Glück kopierst du deine Dateien in Visual Studio, drückst F5 und es läuft, anstatt stundenlang an Makefiles rumzuhacken.
Fazit: Lass die Finger vom gcc unter Windows. Ich habe mich jahrelang damit rumgeschlagen, es funktioniert nicht gut.
-
Hmm ich war mit dem gcc für Windows eigentlich immer recht zufrieden. Gibt es den Windows-Compiler eigentlich auch ohne IDE?
-
player4245 schrieb:
Hmm ich war mit dem gcc für Windows eigentlich immer recht zufrieden. Gibt es den Windows-Compiler eigentlich auch ohne IDE?
Jain. Soweit ich weiß gibt es ihn nicht allein, allerdings muss man die IDE ja nicht benutzen. Die Konsolenbefehle sind alle etwas anders, aber sobald man die herausgefunden hat kann man den wie den gcc benutzen. Allerdings hilft auch hier die IDE: Man kann sich die Compileroptionen zusammenklicken, mit Erklärung was sie tun und was womit nicht kompatibel ist. Am Ende kann man sich einfach den gesamten Compilerflagstring aus der IDE kopieren und in einem Makefile benutzen.
-
Es gibt keinen GCC für Windows. Es gibt Portierungen, wie zB Cygwin oder MinGW. Und es gibt einen 4.4er GCC für MinGW http://www.tdragon.net/recentgcc/
@Janjan
Apple nutzt auch einen GCC und mittlerweile clang (der kann aber noch kaum C++)
-
@nwp2:
Dass ein 4-jahre alter GCC ziemlich schlecht abschneidet ist klarDass der GCC unter Windows etwas stiefmuetterlich behandelt wird, stimmt allerdings leider. Die Release-Candidates bzw. Releases von TDM funktionieren meiner Erfahrung nach trotzdem einwandfrei (bis 4.2, neuere Versionen hab ich nie probiert). Die Inkompatibilitaeten mit Win7 kannte ich allerdings nicht.
Ad IDE: du musst ja nicht Eclipse verwenden. Es gibt (GCC)IDEs, die wesentlich weniger RAM benoetigen als das Visual Studio
-
Microsoft Compiler wird auch in Windows SDK mitgeliefert.
-
Blue-Tiger schrieb:
@nwp2:
Dass ein 4-jahre alter GCC ziemlich schlecht abschneidet ist klarHmm, so klar ist das nicht. Alte Compiler haben weniger optimiert, daher sind sie schneller. Außerdem legt alte Software viel mehr Wert auf Geschwindigkeit, auf einem 100MHz-Rechner kann man sich halt nicht so viel leisten wie auf einem 3GHz-Rechner.
Aber der Vergleich bezog sich eh auf den gcc 4.4.
Clang ist ziemlich nett, der kann hilfreiche bunte Fehlermeldungen machen und ist gcc-kompatibel (soviel wie sie schon implementiert haben) und kann viele weitere Tricks wie Syntax- und vielleicht auch Semantikhighlighting. Ich habe aber leider immernoch keine Clang-kompatiblen Header für Windows gefunden, sonst würde ich wahrscheinlich den benutzen. Übrigens war Clang der Grund warum ich überhaupt Visual Studio installiert habe, sonst würde ich immernoch 10 Sekunden statt 3 aufs Neukompilieren warten (ein gigantischer Unterschied :D).
Edit:
Zeus schrieb:
Microsoft Compiler wird auch in Windows SDK mitgeliefert.
Wobei man erwähnen sollte dass das WinSDK auch seine stolzen 188MB hat. Aber immernoch besser als die 423MB von Visual Studio (bezieht sich auf meine Installationen).
-
nwp2 schrieb:
Die Fehlermeldungen sind miserabel, der Linker braucht ewig und die entstehenden ausführbaren Dateien sind unnötig groß.
Im Vergleich ist der MS-Compiler mindestens doppelt so schnell (selbst wenn der gcc auf Kompiliergeschwindigkeit optimiert und der MS-Compiler auf Programmgeschwindigkeit) und die ausführbaren Dateien sind höchstens halb so groß (selbst wenn der gcc auf Platz optimiert und der MS-Compiler garnicht)Man muss aber auch bedenken, dass die VC++-Executables eine VC++-Runtime auf dem Zielrechner benötigen, wenn man die statisch linkt, ist das Programm doch auch einige KB größer?
-
Der GCC hat unter Windows hauptsächlich ein Problem: Es scheint ihn nicht zu geben. Zumindest nicht in der Form wie auf anderen Betriebssystemen. Man hat die Wahl zwischen einigen schlechten Ports und zugehörigen Hacks. Support für normalsterbliche gibt es auch nicht wirklich. Wo finde ich z.B. einen GCC-Port für Windows x64, den ich wirklich einfach installieren und benutzen kann? Und wie war das nochmals; unterstützt MinGW nach Jahren nun endlich
wchar_t
und die Libraries mitwcout
etc.?Was ich sagen will: Für sehr fortgeschrittene Programmierer, welche mit diversen Platformen arbeiten wollen bzw. müssen, ist das Aufsetzen des GCC unter Windows eine Variante, welche unter gewissen Umständen in Frage kommen könnte. Für alle anderen ist es komplett unvernünftig, den Compiler überhaupt nur zu suchen. Mit Code::Blocks zusammen ausgeliefert ist wohl das Maximum, welches man rausholen kann. Und das ist schade, denn auch wenn Microsoft mit Visual C++ seit 2003 verdammt gute Arbeit geleistet hat, wäre ein wenig Konkurrenz ganz gut
-
/rant/ schrieb:
Der GCC hat unter Windows hauptsächlich ein Problem: Es scheint ihn nicht zu geben. Zumindest nicht in der Form wie auf anderen Betriebssystemen. Man hat die Wahl zwischen einigen schlechten Ports und zugehörigen Hacks. Support für normalsterbliche gibt es auch nicht wirklich. Wo finde ich z.B. einen GCC-Port für Windows x64, den ich wirklich einfach installieren und benutzen kann? Und wie war das nochmals; unterstützt MinGW nach Jahren nun endlich
wchar_t
und die Libraries mitwcout
etc.?Wie gesagt, GCC-4.4.x-Versionen wie der TDM MinGW unterstützen diese Libs.
-
In Tests habe ich festgestellt, das VC++ auch bei statisch gelinkter Standardlib kleinere Executables produziert (fast 50 % kleiner).
-
Mr X schrieb:
In Tests habe ich festgestellt, das VC++ auch bei statisch gelinkter Standardlib kleinere Executables produziert (fast 50 % kleiner).
Gut möglich, vor allem der MinGW-TDM-GCC 4.4.1 produziert, wenn man <iostream> einbindet, selbst mit allen Optimierungen 450 KB großen Code
.
Vielleicht bringt ja die LTO vom neu erschienenen GCC 4.5 was.
EDIT: Link-Time-Optimisation gibt's nur für ELF-Targets, dazu zählt Windows nicht.
-
wxSkip schrieb:
Mr X schrieb:
In Tests habe ich festgestellt, das VC++ auch bei statisch gelinkter Standardlib kleinere Executables produziert (fast 50 % kleiner).
Gut möglich, vor allem der MinGW-TDM-GCC 4.4.1 produziert, wenn man <iostream> einbindet, selbst mit allen Optimierungen 450 KB großen Code
.
Vielleicht bringt ja die LTO vom neu erschienenen GCC 4.5 was.Lässt sich die exe auch nicht "strippen" (mit strip)?
-
Ist schon gestrippt.
Das einzige, was ich noch probieren könnte, ist -Os.EDIT: Bringt auch nichts, immer 457 KB groß.
-
wxSkip schrieb:
/rant/ schrieb:
Der GCC hat unter Windows hauptsächlich ein Problem: Es scheint ihn nicht zu geben. Zumindest nicht in der Form wie auf anderen Betriebssystemen. Man hat die Wahl zwischen einigen schlechten Ports und zugehörigen Hacks. Support für normalsterbliche gibt es auch nicht wirklich. Wo finde ich z.B. einen GCC-Port für Windows x64, den ich wirklich einfach installieren und benutzen kann? Und wie war das nochmals; unterstützt MinGW nach Jahren nun endlich
wchar_t
und die Libraries mitwcout
etc.?Wie gesagt, GCC-4.4.x-Versionen wie der TDM MinGW unterstützen diese Libs.
x64?
TDM-GCC is now heartily endorsed for production use in any non-critical environment. No level of support for TDM-GCC is in any way guaranteed.
Ich wünsch mir einen GCC auf Linux Niveau. Am besten so einfach einzurichten und sicher zu benutzen wie etwa unter Ubuntu
-
/rant/ schrieb:
Ich wünsch mir einen GCC auf Linux Niveau. Am besten so einfach einzurichten und sicher zu benutzen wie etwa unter Ubuntu
Mit dem Einrichten gibts doch aber eigentlich keine Probleme, oder?