C++ - frontend nur compiler (konvertieren von C++ zu C)
Ich bin derzeit Geschäftsführer einige C++ - code, läuft auf verschiedenen Plattformen von einem einzigen source tree (Win32, Linux, Verifone CC-terminals, MBED und auch die Nintendo GBA/DS). Allerdings brauche ich zum erstellen einer app gezielt auf eine embedded-Plattform, für die es kein C++ - compiler (C). Ich remmber, dass viele der frühen C++ - Compiler wurden nur front-ends stitting auf vorhandene C-Compiler (Glockenspiel zum Beispiel verwendet, MSC). Gibt es solche 'frontend' - C++ - Compiler heute im Einsatz zur Generierung von C-code.
Tools Platform
----------- ------------
______Visual C++ _____ WIN32
/
/_______MBED (ARM)_______MBED (ARM dev board).
/
/_________GCC (x86)________Linux
/
Source____/___________GCC (ARM)________GBA/DS
\
\__________SDA______________Verifone Verix CC Terminals
\
\________ARM SDT__________Verifine VerixV CC terminals
\
\______????_____________Renases M8/16/32.
\
\____????_____________Z8 family.
Den letzten zwei Plattformen, die ich haben gute C-Compiler für die aber kein C++.
Wie Sie sehen können ich bin die Unterstützung einer Vielzahl von Plattformen und ich teilen eine große Menge an code für die Bibliothek (und einige app-code).
- Ein paar gute Dinge heraus zu überprüfen, insbesondere LLVM als Mittel zur Erzeugung von C von C++ und ich wusste nicht, dass GCC unterstützt jetzt die Renesas M16/M32 (dass nur Blätter der Z8 ohne einen C++ - compiler und um ehrlich zu sein ich kaufte eine billige dev board, check it out, Nostalgie für mein Z80 Herkunft, es ist eine schöne mikrocontroller obwohl). Auch ich möchte den Gegner älteren Hypercom-terminals (die ich geschrieben habe, ein gutes Stück code für diese, aber ich habe einen eigenen source-tree. Ich weiß, die neueste Hypercoms sind ARM-basiert, aber es gibt immer noch Millionen von diesen lästigen EIS-terminals gibt.
- Verwandte: stackoverflow.com/q/737257
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie LLVM,
llvm-g++
kompiliert C++ - code auf LLVM-bitcode undllc
hat ein backend wandelt bitcode zu C.Könnten Sie schreiben, Befehle wie diese:
Comeau C++ dies tut.
Kann nicht helfen, mit den Z8, aber die Renesas M16C/M32C-Familie hat GCC in diesen Tagen - siehe http://www.kpitgnutools.com/ für vordefinierte cross-toolchain unter Windows gehostet. Habe nicht verwendet es selbst noch nicht, aber möglicherweise eine bessere option als ein 3rd-party-C++ - frontend, vor allem, wie Ihr code bereits Ziele GCC auf anderen Plattformen.
Comeau C++ C erzeugt als Ausgabe, und Sie scheinen ziemlich glücklich sein, die Portierung arbeiten mit verschiedenen back-end-Compiler, aber ich bin mir nicht sicher über die genauen Preise für diese.
Wenn Sie wollen ein bisschen mehr von einem "roll your own" - Ansatz, könnten Sie kaufen eine Lizenz für die EDG C++ - compiler. Es ist in der Regel als front-end (z.B. durch Comeau und Intel), aber ich glaube, wie es ist ausgeliefert, es enthält einen code-generator, der erzeugt C als Ausgabe. Seine Lizenz orientiert sich mehr in Richtung compiler-Hersteller, aber so eine Lizenz gibt Ihnen viele Rechte, aber ist ziemlich teuer.
Veraltet, aber vielleicht möchten Sie versuchen cfront?
Überlasse ich dies für Informationen - cfront nicht Ausnahme unterstützen.
Was ich verstanden habe, ist die Unterstützung für c++ in gcc für r8c/m16c/r32c ist nicht ganz reif und gut genug für die Produktion von code. Aber für r8c/m16c/m32c/r32c es ist mindestens eine compiler-Unterstützung von embedded C++, und das ist IAR, ich denke, das Multitasking unterstützt auch embedded C++ auf m16c.
Beachten Sie, dass die gültige Lösung ist für llvm 1.3
llvm Letzte release war 6.0.0, so würde es nicht funktionieren.
(Ich poste das, weil ich habe versucht die Lösung von diesem post, aber es funktioniert nicht mehr) (Vielleicht habe ich etwas schlimmes gemacht)
In meinen tests llc nicht akzeptieren mehr die -march=c option.
Und gehen wir zurück zu den 1.3 ist nicht möglich für mich noch.
So versuchen Sie, kümmert sich um die version.