[Amiga][Down]

[ german ] [ english ]
[Scene] {}
 
[Workshop] 

| DICE C Compiler |
 
 

[Cover]
[Editorial]
[Inhalt]
[News]
[Hardware]
[Software]
[Workshop]
[Spiele]
[Special]
[Feedback]
[Etc]


DICE C Compiler - Von der Installation bis zum ersten 'hello.c'

 
Die erste Frage, die sich Otto Normaluser, der bei dem Namen 'dice' eher an einen Zufallsgenerator, der Würfelaugen berechnet, als an etwas anderes denkt, stellt, lautet wohl: Was ist DICE überhaupt? DICE ist ein ANSI-C Entwicklungssystem, welches von Matt Dillon komplett für und auf dem Amiga geschrieben wurde. DICE ist sogar noch mehr:

 
DICE ist ein 68000 Compiler und kann, vorausgesetzt man lädt sich den Source herunter, auch auf jeder beliebigen Plattform kompiliert werden. DICE ist einfach zu installieren, jedenfalls einfacher als GNU-C, weil es nicht so 'unixoid' ist. DICE ist zwar nicht perfekt, aber die perfekte Lösung für den, der ein paar kleine Tools entwerfen will und die Installation eines GCC scheut, genauso wie das Aufbringen einer beträchtlichen Summe Geld für einen kommerziellen Compiler. DICE ist für Leute, die noch nicht sattelfest in C++ sind und erst den ANSI-C Standard lernen müssen. DICE ist jetzt Freeware.

DICE ist vielleicht nicht jeder(mann/frau)s Sache, vor allem die Leute, die das Klicksen auf Windows gewohnt sind, werden sich erst einmal mit der Tastatur etwas mehr anfreunden müssen. Aber nur keine Angst, denn schließlich ist dieser Workshop genau für diese Leute gedacht. Es wird nicht jeder einzelne Schritt beigebracht, aber es ist eine Art Anleitung. Später soll jeder selbst in der Lage sein, weiter zu experimentieren und sein Wissen zu erweitern.

 
Also los geht's. Wir statten den unten angeführten Sites einen Besuch ab und laden uns das gute Teil, sowie reichlich Dokus und Zusatz-Archive dazu herunter. Da gibt es erfreulicherweise nicht allzu viel zum Runterladen - man behält also leichter den Überblick.

Warum eigentlich DICE und nicht irgendein anderer Compiler? Erstens läuft DICE auf jedem Amiga (angefangen bei einem Amiga500/1MB), und zweitens kompiliert DICE um einiges schneller als GNU-C. Woraus besteht nun DICE genau? Also, da wären...

- Compiler 'DCC' (übersetzt den Code)
- Debugger 'DEBUG' (noch nicht ganz ausgereift)
- Linker 'DLINK' (fügt Objektdateien zusammen)
- Profiler 'DPROF' (wie tut unser Programm so?)
- Assembler 'DAS', 'A68k' (komfortabler als 'DAS')
- Online Help 'DiceHelp' (Info auf Knopfdruck)
- 'VMake', 'VOpts' (wer ungern MakeFiles selber macht)
- Development Tools (Objektdateien und Libs manipulieren)
- Make Utility 'DMake' (wer gern MakeFiles macht)
- Editor 'DME' und andere (besser CygnusEd oder GoldEd)
- Source Code Management Tools
- Romable Code Generation Tools
- Libraries & Source Codes
 
 

Installation

 
Man entpacke das DICE-Archiv aus dem Aminet. Dann lese man in der Datei ReadMe.1st unter "Installation" nach, welche Assigns das Programm benötigt. Oder man ist faul und fügt einfach


assign DCC: <where it is installed>/DICE
assign DLIB: DCC:dlib
assign DINCLUDE: DCC:include
path DCC:bin/ ADD

 
in die Datei s:user-startup ein. Dann kopiere man die dicecache.library nach LIBS:. Als nächstes benötigen wir die AmigaOS Includes (zwar nicht für "Hello World!", aber vielleicht später einmal bei einem Programm mit GUI. Also mache man dies, falls man die Developer-CD V1.2 besitzt:


MakeDir dinclude:amiga31
MakeDir dinclude:amiga31/fd
Copy ADCD_v1.2:ndk/ndk_3.1/includes&libs/include_h/#? dinclude:amiga31/ all
Copy ADCD_v1.2:ndk/ndk_3.1/includes&libs/fd/#? dinclude:amiga31/fd/

 
Oder dies, falls man die V1.1 hat:


MakeDir dinclude:amiga31
MakeDir dinclude:amiga31/fd
Copy Amiga_Dev_CD_v1.1:NDK_3.1/Includes&Libs/include_h/#? dinclude:amiga31/ all
Copy Amiga_Dev_CD_v1.1:NDK_3.1/Includes&Libs/fd/#? dinclude:amiga31/fd/

 
So, ein wenig in den diversen ReadMe-Dateien schmökern schadet nie, und ich wette, jeder kommt ganz leicht von selbst auf alles drauf. Es ist wirklich nicht schwer, man darf sich lediglich nicht davon verwirren lassen, daß manche Dateien vielleicht etwas veraltet sind, aber das sollte jeder von selbst merken.

 

Unser erstes Programm

 
Im Verzeichnis docs befindet sich ein netter kleiner Workshop (BEGINNER_README.DOC), der alles ganz genau erklärt. Wenn man diesen durchliest und danach vorgeht, sollte eigentlich nichts passieren. Also gut, denke ich mir, und programmiere einfach drauflos...


Neuer Shell-Prozeß 11
11.Ram Disk:> dcc
DCC 1.12 (24.12.95)
Copyright (c) 1992,1993,1994 Obvious Implementations Corp., Redistribution & Use under DICE-LICENSE.TXT.
11.Ram Disk:> t:
11.Ram Disk:T> ced test.c

 
Wobei test.c so ausgesehen hat:


#include <stdio.h>
#include <stdlib.h>

main()
{
    puts("HEllo World!");
    return(0);
}

 
Und weiter geht's...


11.Ram Disk:T> dcc test.c -o test
DLINK: "" L:0 C:0 Error:41 Unable to find dlib:amigas.lib model <>
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _LVOAllocMem (amiga/c)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _LVOSetSignal (amiga/c)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _LVOFreeMem (amiga/c)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _LVOForbid (amiga/c)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _LVOReplyMsg (amiga/c)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _FindTask (T:main)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _Open (T:main)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _CurrentDir (T:main)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _AllocMem (T:malloc)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _IsInteractive (T:isatty)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _Seek (T:lseek)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _Seek (T:write)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _Write (T:write)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _SetSignal (T:chkabort)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _DeleteFile (T:fclose)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _Close (T:close)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _FreeMem (T:free)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _Wait (T:free)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _LVOWaitPort (alib/wbmain)
DLINK: "" L:0 C:0 Error:36 Undefined Symbol: _LVOGetMsg (alib/wbmain)
Exit code 20

 
Oooops, was is da passiert? Ah, man muß einstellen, welche Library genutzt werden soll. Das haben wir gleich...


11.Ram Disk:T> dlib:
11.Fox:dice/dlib> dir
  amiga20l.lib                     amiga20pl.lib
  amiga20rl.lib                    amiga20rpl.lib
  amiga20s.lib                     amiga20sp.lib
  amiga20sr.lib                    amiga20srp.lib
  amiga31l.lib                     amiga31pl.lib
  amiga31rl.lib                    amiga31rpl.lib
  amiga31s.lib                     amiga31sp.lib
  amiga31sr.lib                    amiga31srp.lib
  autol.lib                        autos.lib
  c.o                              cl.lib
  cpl.lib                          crl.lib
  crpl.lib                         cs.lib
  cs.lib.free                      csp.lib
  csp.lib.free                     csr.lib
  csrp.lib                         c_pi.o
  c_pr.o                           ml.lib
  mpl.lib                          mrl.lib
  mrpl.lib                         ms.lib
  msp.lib                          msr.lib
  msrp.lib                         muil.lib
  muirl.lib                        muis.lib
  muisr.lib                        reqtoolsl.lib
  reqtoolsrl.lib                   reqtoolss.lib
  reqtoolssr.lib                   roml.lib
  romrl.lib                        roms.lib
  romsr.lib                        ucs.lib
  ucsr.lib                         x.o

 
Na, ich hab OS3.1, also stell ich mir das so ein:


11.Fox:dice/dlib> setenv dccopts -3.1

 
Und auf ein neues...


11.Fox:dice/dlib> t:
11.Ram Disk:T> dcc test.c -o test
11.Ram Disk:T> test
HEllo World!

 
Na, das klappt ja vorzüglich, und sogar resident im Speicher läßt es sich kompilieren:


11.Ram Disk:T> dcc test.c -o test -r
11.Ram Disk:T> test
HEllo World!

 
 

Finito

 
Aus, Ende, den Rest soll jeder brav selber herausfinden. Es gibt ein paar nette Tutorials in einem guten englischen Amiga Ex-Magazin (CU Amiga) zur Amiga Intuition Programmierung, weiters seien die ARKRMs und die Developer CDs ein heißer Tip, sowie das Amiga Guru Buch von Ralph Babel und diverse andere Literatur. Ich hab hier zu Hause auch eine ganze Menge an Büchern über C am Amiga, falls es jemanden interessiert, ich kann sie sowieso nicht alle lesen, Mail an mich.

Bernhard Lukas     [ german ]    
Steve Bowman     [ english ]    


- DICE Homepage
- Richard Drummond's DICE Homepage
- Download DICE 3.16 (Aminet)
- Amiga C-Kurs mit Diskussionsforum
- Amiga C Mailingliste(n) (Suchen nach 'amiga c')
 
[Up]   {}