Article View: dnet.atari
Article #402Re: C++ oder g++ fuer Atari ST?
From: Ralf Kretzschmar Betr. Philippse...
Date: Wed, 17 Apr 1991 07:46
Date: Wed, 17 Apr 1991 07:46
54 lines
3535 bytes
3535 bytes
In article <10460@sbsvax.cs.uni-sb.de>, timm@fb14vax.cs.uni-sb.de (Jan Timm) writes:
|> From article <SEEBAUER.91Apr16105208@eos.informatik.uni-bonn.de>, by seebauer@eos.informatik.uni-bonn.de (Heinrich Seebauer):
|> > Zum g++, ich habe auf cs.uni-sb.de [134.96.7.254] in Saarbruecken
|...
|> Das Zeug ist laut Edgar Roeder, der den atari-ftp-bereich hier verwaltet
|> (oder mal verwaltet hat, ich hab den eindruck da laeuft nichts mehr),
|> MUELL!
Also, so schlimm ist die Situaton auch nicht. Der g++ aus SB ist zwar nur eine
Miniportierung, aber man kann mit einigen Tricks und dem gcc aus SB schon was
anfangen. Die Frage ist nur, wie weit man kommt...
Der gcc hat bereits die Erkennung von C++-Dateien (.cc) eingebaut. Der
Praeprozessor erkennt auch die entsprechenden Kommentare. Prinzipiell wuerde er
auch den g++ aufrufen, aber jener kennt keinen Unixmode. Und damit geht
das ganze dann schief, weil der 2. Pass keine Dateien findet.
Man kann ueber diese Huerde jedoch auch noch hinweg kommen: Man schreibe ein
Makefile (moeglichst GNU-Make), dass fuer .cc-Dateien eine neue Default-Regel
besitzt:
.cc.o:
gcc -E $*.cc > $*.cpp
gcc-cc1p $*.cpp $*.s
gcc $(CFLAGS) $*.s
rm $*.cpp $*.s
Mit dieser Default-Regel bekommt man alles schon mal uebersetzt. Allerdings
duerfen die Dateien nur im aktuellen Directory liegen - sonst findet sie der
gcc-cc1p nicht! Beim Linken benutze ich die Bibliotheken und auch den
C-Runtime-Startup (crt) des gcc. Dadurch sind natuerlich der ganzen Spielerei
recht enge Grenzen gesetzt. Aber fuer einige erste Experimente mit C++ genuegt
das Ganze.
Und damit sind wir auch schon bei den unueberwindlichen Hindernissen angekommen:
Was vermutlich nicht funktioniert sind alle Sachen, die in irgendeiner Form
zu Beginn der Ausfuehrung eines Programmes dynamisch initialisiert werden
muessen (z.B. Initialisierung statischer Objekte). Dazu muss vor Aufruf von main
eine Initialisierungsroutine gestartet werden, fuer die im crt des gcc aber kein
Einsprung zu erwarten ist.
Damit entfaellt natuerlich ein recht breites Spektrum an C++-Eigenschaften,
was sich aber nur durch eine richtige Portierunng aendern laesst.
Leider hatte ich bisher zu wenig Zeit zum ausprobieren. Was auf jeden Fall klappt,
ist eine Verbindung von C++ und GEM. Ich habe mir eine primitive Window-Klasse
geschrieben, die sich auf dem AES oeffnen und schliessen liessen. Allerdings
waren die Objekte alle dynamisch. Ebenfalls habe ich mit Vererbung und virtuellen
Methoden erfolgreich experimentiert. Auch da scheint man recht weit zu kommen.
Fazit: Wer mal nur in C++ reinschnuppern will, der kann mit dem g++ schon mal
herumspielen - fuer eine ernsthafte Entwicklung ist der g++ allerdings auch
meiner Meinung nach unbrauchbar.
Ralf
Technical Details
Message-ID:
<1991Apr17.074627.13622@ira.uka.de>Path:
arc1-ca.pugleaf.net!gmdzi!unido!ira.uka.de!i41fs1!ralfReferences:
<SEEBAUER.91Apr16105208@eos.informatik.uni-bonn.de> <10460@sbsvax.cs.uni-sb.de>Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit X-Google-Thread: 12bdcf,aee7b2d88a7ba146 X-Google-Attributes: gid12bdcf,public X-Google-ArrivalTime: 1991-04-17 01:10:51 PST Path: arc1-ca.pugleaf.net!gmdzi!unido!ira.uka.de!i41fs1!ralf From: ralf@ira.uka.de (Ralf Kretzschmar Betr. Philippsen) Newsgroups: dnet.atari Subject: Re: C++ oder g++ fuer Atari ST? Message-ID: <1991Apr17.074627.13622@ira.uka.de> Date: 17 Apr 91 07:46:27 GMT References: <SEEBAUER.91Apr16105208@eos.informatik.uni-bonn.de> <10460@sbsvax.cs.uni-sb.de> Sender: news@ira.uka.de (USENET News System) Reply-To: ralf@ira.uka.de (Ralf Kretzschmar Betr. Philippsen) Distribution: dnet Organization: University of Karlsruhe, FRG Lines: 54