CCC2 telepítés

Dr. Vermes Mátyás

2004. október

1.  Újabb infó
2.  CCC installáció gyorsan
3.  CCC csomagok beszerzése
4.  CCC környezet kialakítása
    4.1.  Windows
    4.2.  Linux
    4.3.  FreeBSD
    4.4.  Solaris
5.  A csomagok tartalma
    5.1.  ccc2.zip (WLFS)
    5.2.  setup-flex.zip (WLFS)
    5.3.  setup-lemon.zip (WLFS)
    5.4.  setup-unix.zip (LFS)
    5.5.  setup-windows.zip (W)
    5.6.  ccc-fltk.zip (WLFS)
    5.7.  jt.zip (WLFS)
    5.8.  jtpython.zip (WLFS)
    5.9.  openssl-xxx.zip (W)
    5.10.  x-fonts.zip (LFS)
6.  Telepítési problémák
    6.1.  Hiányzik az unistd.h
    6.2.  Hiányzik malloc.h
    6.3.  Fltk installáció
    6.4.  Borland cfg filék
    6.5.  Directory nevek
    6.6.  Nagy fájlok (Large File Support)
    6.7.  GCC verziók

1.  Újabb infó

Ez a dokumentáció a régebbi CCC2-ről, annak is egy régebbi állapotáról szól, azaz mára meglehetősen elavult. Néhány részletkérdés miatt azonban érdemes lehet a régi dokumentációt is nézegetni, ezért van mégis megtartva.

A gyakorlatban a CCC2-t úgyanúgy telepítjük, mint a CCC3-at, kivéve, hogy a leírtakat értelemszerűen CCC2-re alkalmazzuk: a directory és környezeti változó nevekben a 3-at 2-re cseréljük.

Érdemes pár szóban összefoglalni a CCC2 és CCC3 viszonyát. A CCC2 fixen Latin-2 kódkészlettel működik. A CCC3 fő újdonsága ezzel szemben a Unicode/UTF-8 kódolás, valamint a (Unicode kódolású) karakter stringek és tetszőleges tartalmú byte stringek megkülönböztetése. Mára a Unicode/UTF-8 kódolás általánossá vált, ezért új programot feltétlenül CCC3-ban érdemes elkezdeni.

A régi programok fenntartása érdekében azonban a CCC2 is fejlődik. Került bele egy kompatibilitási réteg, ami lehetővé teszi néhány CCC3-ban fejlesztett alkalmazás lefordítását. Ilyenek a jt, regex, socket, sql2, websrv, xmlrpc. Így nem kell ezeket külön CCC2-ben is karban tartani. A nyelv újabb elemei, mint a postfix függvényhívás, string indexelés, asszociatív tömbök, stb. gyorsan megszokhatók. Rendkívül bosszantó volna, ha ezeket nélkülözni kellene, tehát backportolva vannak CCC2-re.

A többi már csak a múlt.

2.  CCC installáció gyorsan

Feltételezzük, hogy Linux/UNIX-on, vagy Windows-2K-n vagyunk, és telepítve van gépünkön egy alkalmas C fordító. UNIX-on telepíteni kell a bash parancsértelmezőt, ennek kell lennie a default shellnek, és a /bin/bash paranccsal kell tudni indítani. Elkészítjük a CCCDIR directoryt, és beállítjuk az alábbi környezeti változókat (ez itt UNIX, Windowson természetesen windowsos szintaktikát használunk):

export CCCDIR=/opt/ccc2 # bárhol lehet (ahol írási jogunk van)
export CCCUNAME=linux   # lehetséges: linux,solaris,freebsd,nt
export CCCBIN=lin       # lehetséges: lin,sol,fre,mng,bor,msc
export PATH=$PATH:$CCCDIR/usr/bin/$CCCUNAME
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CCCDIR/usr/lib/$CCCBIN

A CCCUNAME változó tartalmazza az OS nevét (a Windowst a régi NT név alapján nt jelöli). A CCCBIN változó tartalmazza a tárgykód típusát:

lin Linux/GCC
sol Solaris/GCC
fre FreeBSD/GCC
mng Windows/MinGW (GCC)
msc Windows/Microsoft C
bor Windows/Borland C

Letöltjük az alábbi csomagokat:

Linux/UNIX Windows
ccc2-yyyymmdd.zip ccc2-yyyymmdd.zip
setup-flex-yyyymmdd.zip setup-flex-yyyymmdd.zip
setup-lemon-yyyymmdd.zip setup-lemon-yyyymmdd.zip
setup-unix-yyyymmdd.zip setup-windows-yyyymmdd.zip

Azaz a négy csomagból csak a setup-unix/setup-windows különbözik. Kibontjuk a csomagokat CCCDIR-ben. Linux/UNIX-on elindítjuk install.b-t, Windowson install.bat-ot.

3.  CCC csomagok beszerzése

A CCC csomagokhoz kétféleképpen lehet hozzájutni:

A CCC installációja közel sem automatikus. Feltételezzük, hogy a kedves felhasználó eligazodik a shell scriptek és C fordítók világában.

A C fordításban törekedni kell a warning-mentességre. E sorok írásakor ez teljesül: az összes C program, az összes C fordítóval warning-mentesen fordul. Újabb változatú fordítók esetén a szigorúbb ellenőrzés felszínre szokott hozni újabb warningokat, ha azonban túl sok ilyen van, akkor valószínűleg a fordító nincs rendesen telepítve.

Tisztában kell lenni bizonyos függőségi viszonyokkal:

  1. A fordító eszközök (prg2ppo, ppo2cpp) és az XML elemző igénylik a Flex és Lemon programokat. Az újabb CCC kiadásokban a CCC-vel együtt automatikusan települ a Flex és a Lemon.

  2. Az Fltk megjelenítéshez előzőleg installálni kell az Fltk grafikus könyvtárat.

  3. Az OpenSSL interfésznek szüksége van az openssl könyvtárra.

Ezek az eszközök általában nincsenek meg maguktól, hanem be kell őket szerezni, installálni kell őket, és némi gyakorlatot kell szerezni a használatukban.

4.  CCC környezet kialakítása

4.1.  Windows

Mindenképpen legalább Windows NT-re van szükség, Windows 2000 ajánlott, Windows 9x biztosan nem felel meg. Szükségünk van egy C fordítóra, a támogatott fordítók:

Hozzunk létre egy shell scriptet dirmap.bat néven az alábbihoz hasonló tartalommal:

@echo off
set CCCDIR=d:\ccc2
set MSCDIR=d:\msc2003
set BORDIR=d:\borland\bcc55
set GNUDIR=c:\mingw320
set JAVDIR=d:\j2sdk1.4.2

Ez a script mutatja, hogy hol vannak a dolgok a filérendszerünkben. Persze gépenként változó, hogy hol vannak a dolgok. Az én scriptemben három fordító helye is meg van adva (MSC, Borland, MinGW), de a CCC használatához egy is elég.

A következő példa a MinGW környezet kialakítását mutatja, hasonlóan kell eljárni a többi fordító esetén is. Hozzunk létre egy másik shell scriptet ccc_mng.bat (vagy ccc_msc.bat, vagy ccc_bor.bat) néven az alábbihoz hasonló tartalommal:

@echo off
call dirmap
set CCCBIN=mng
set CCCUNAME=nt
set PATH=%WINDIR%;%WINDIR%\system32
set PATH=%JAVDIR%\bin;%PATH%
set PATH=%GNUDIR%\bin;%PATH%
set PATH=%CCCDIR%\usr\bin\nt;%PATH%
set INCLUDE=%GNUDIR%\include;
set LIB=%GNUDIR%\lib;
start "CCC-MinGW environment"

A CCCBIN környezeti változó mutatja, hogy mivel fordítunk (msc, bor, mng). A CCCUNAME változó mutatja, hogy milyen rendszeren futó programok készülnek (nt). Ha a ccc_xxx.bat scriptet elindítjuk, akkor feljön egy shell, amiben éppen a nekünk szükséges beállítások lesznek érvényben. A továbbiakban mindig ebben a shellben dolgozunk. Hozzuk létre ténylegesen a CCC directoryt (CCCDIR) a dirmap.bat-ban megadott helyen. Töltsük le a

csomagokat, másoljuk be CCCDIR-be, és bontsuk ki. (A windowsosoknak nincs unzip programjuk, meg kell tehát szerezni a webről az Infozip csomagot, ez mindent tud, ami kell, és ingyenes.)

A CCCDIR-ben találunk egy install.bat scriptet, ami lefordítja az egész CCC-t. Ne indítsuk azonban el vakon, hanem némi áttekintés megszerzése céljából nyissuk meg egy editorral, és nézzük meg, hogy mit fog csinálni:

  1. A setup-windows directoryból installálja a fordítás elkezdéséhez szükséges négy exe filét (build, prg2ppo, ppo2cpp, ccomp).

  2. A setup-flex directoryból installálja a flex-et (szintaktikai elemző generátor).

  3. A setup-lemon directoryból installálja a lemon-t (nyelvtani elemző generátor).

  4. Bemegy a ccclib directoryba, és lefordítja a CCC alapkönyvtárait. Az Fltk megjelenítő könyvtár fordítása csak akkor lehet sikeres, ha gépünkön installálva van az Fltk, ezért kezdetben a ccc2_uif könyvtár fordítása ki van kommentezve.

  5. Utána bemegy a ccctools directoryba, és lefordítja a CCC fordításban szerepet játszó programokat. A (setup-windows.zip-ben letöltött) build, prg2ppo, ppo2cpp programok most lefordítják saját magukat.

  6. A ccctab directoryban lefordulnak a táblaobjektum könyvtárak. A tbdatidx és tbdbfctx könyvtárak installálásához előzőleg a ctree-nt.zip csomagot is le kell tölteni (és CCCDIR-ben kibontani). Ha nincs szükség CTREE adatbáziskezelésre, akkor a megfelelő sorokat kommentezzük ki.

  7. A terminal directorykban lefordulnak a távoli karakteres megjelenítéshez szükséges eszközök.

  8. A tools-ban fordul néhány hasznos könyvtár és eszköz:
    crypto openssl interfész (előzőleg installálni kell az openssl-t)
    dbaseiii osztály dbf állományok olvasásához
    socket socket könyvtár
    xmldom XML elemző osztály
    xmlrpc XMLRPC szerver és kliens osztály
    ddict2 adatszótár karbantartó
    mask dialogbox editor
    savex eszköz directory struktúrák szinkronizálásra
    sql2 interfész Oracle és Postgres adatbáziskezelőhöz
    z text editor

4.2.  Linux

Installáljuk az x-fonts.zip csomagban lévő fontokat. A pcf.gz font filéket az /usr/lib/X11/fonts/misc directoryba kell bemásolni, majd ugyaninnen rootként kiadjuk a mkfontdir parancsot. Az X-et újraindítjuk. Létrehozunk egy ccc nevű csoportot, és ezt a csoportot állítjuk be a saját csoportunknak. A továbbiakban mindig ebben a csoportban dolgozunk. A saját home-unkban a .bashrc filébe írjuk be az alábbiakat

export CCCDIR=/opt/ccc2
export CCCBIN=lin
export CCCUNAME=linux
export CCC_XSIZE=80x36
export CCC_XFONT=ccc8x16
export OREF_SIZE=20000
export PATH=$CCCDIR/usr/bin/$CCCUNAME:$PATH
export LD_LIBRARY_PATH=$CCCDIR/usr/lib/$CCCBIN:$LD_LIBRARY_PATH

Hozzuk létre ténylegesen a CCC directoryt a .bashrc-ban megadott helyen, a csoportja legyen ccc, a permission flageket állítsuk be 2775-re. Töltsük le a

csomagokat, másoljuk be CCCDIR-be, és bontsuk ki. A CCCDIR-ben találunk egy install.b scriptet, ami lefordítja az egész CCC-t. Ne indítsuk azonban el vakon, hanem némi áttekintés megszerzése céljából nyissuk meg egy editorral, és nézzük meg, hogy mit fog csinálni:

  1. Ellenőrzi, hogy jól van-e beállítva a CCCDIR környezeti változó.

  2. A setup-unix directoryban lefordítja és installálja a fordítás elkezdéséhez szükséges programokat (build, prg2ppo, ppo2cpp).

  3. A setup-flex directoryból installálja a flex-et (szintaktikai elemző generátor).

  4. A setup-lemon directoryból installálja a lemon-t (nyelvtani elemző generátor).

  5. A terminal-unix direcotryban lefordulnak a fullscreen karakteres (lokális és távoli) megjelenítéshez szükséges eszközök.

  6. Bemegy a ccclib directoryba, és lefordítja a CCC alapkönyvtárait. Az Fltk megjelenítő könyvtár fordítása csak akkor fog lefutni, ha gépünkön installálva van az Fltk, ezért kezdetben a ccc2_uif könyvtár fordítása ki van kommentezve.

  7. Utána bemegy a ccctools directoryba, és lefordítja a CCC fordításban szerepet játszó programokat. A (setup-unix.zip-ben letöltött) build, prg2ppo, ppo2cpp programok most lefordítják saját magukat.

  8. A ccctab directoryban lefordulnak a táblaobjektum könyvtárak. A tbdatidx és tbdbfctx könyvtárak installálásához előzőleg a ctree-lin.zip csomagot is le kell tölteni (és CCCDIR-ben kibontani). Ha nincs szükség CTREE adatbáziskezelésre, akkor a megfelelő sorokat kommentezzük ki.

  9. A tools-ban fordul néhány hasznos könyvtár és eszköz:
    crypto openssl interfész (előzőleg installálni kell az openssl-t)
    dbaseiii osztály dbf állományok olvasásához
    socket socket könyvtár
    xmldom XML elemző osztály
    xmlrpc XMLRPC szerver és kliens osztály
    ddict2 adatszótár karbantartó
    mask dialogbox editor
    savex eszköz directory struktúrák szinkronizálásra
    sql2 interfész Oracle és Postgres adatbáziskezelőhöz
    z text editor

Ha nincs installálva gépünkön az OpenSSL, vagy a PostgreSQL fejlesztő környezet, akkor pótoljuk, vagy az install.b script a megfelelő sorait kommentezzük ki (máskülönben fordításkor egy csomó hibát kapunk).

4.3.  FreeBSD

FreeBSD-n ugyanúgy alakítunk ki CCC környezetet, mint Linuxon, tehát a Linuxnál leírtak érvényesek, itt csak az eltéréseket ismertetem.

Környezeti változók
FreeBSD-n az alábbi környezeti változókat kell beállítani:
export CCCBIN=fre
export CCCUNAME=freebsd

bash
Installálni kell a bash2 shell-t (magától nem települ), és kell csinálni egy /bin/bash linket (magától /usr/local/bin-be teszi). A CCC fordító scriptek mind így kezdődnek: #!/bin/bash, úgyhogy enélkül egy lépést sem lehet tenni.
malloc.h
A CCC programok számos helyen inkludálják malloc.h-t. A FreeBSD 5.3-ban a GCC erre azt a hibaüzenetet adja, hogy az új C szabványban malloc.h megszűnt, és helyette stdlib.h-t kell használni. Természetesen ez nem elfogadható, tehát csinálni kell egy malloc.h-t, ami csendben inkludálja stdlib.h-t.

Ezektől az apróságoktól eltekintve a Linux és FreeBSD CCC programozói szempontból nézve meglehetősen egyforma.

4.4.  Solaris

Solarison a GNU környezet kialakításával kezdjük. A CCC installáció lényegében azonos a Linuxnál leírtakkal, csak CCCBIN=sol, CCCUNAME=solaris beállításokat alkalmazunk. Az alábbiakban egy Sun Blade 100 (SPARC 64 bit, Solaris 8, GCC 2.95.3) rendszeren szerzett tapasztalataimat írom le:

  1. A gépen előre installálva van a Solaris, rákötjük a hálózatra. Megcsináljuk a ccc csoportot, a CCC felhasználókat, a felhasználók .profile filéjét, ami majd beállítja a CCCDIR, CCCBIN, CCCUNAME, PATH, LD_LIBRARY_PATH, umask(=002) változókat.

  2. Letöltjük a Sun-tól a GNU Companion CD-t, és installáljuk. Sajnos ezt a CD-t nem frissítik, jelenleg is a GCC 2.95.3 van rajta, noha Linuxon már egy ideje a 3.3.1-es változatot használjuk. A GNU szoftver a /opt/sfw directoryba kerül. Egyes programok neve elé raktak egy g betűt, pl. make helyett gmake, ld helyett gld, nm helyett gnm, stb. A passwd filében beállítjuk, hogy minden felhasználó shellje a bash legyen (a rooté is).

  3. Nincs a Companion CD-n mc, ezért szerzünk a webről egy mc-t (régit, mert az újhoz GTK kell), lefordítjuk és installáljuk.

  4. Ugyancsak beszerezzük a webről, lefordítjuk és installáljuk a legújabb openssl-t és openssh-t (ezek sincsenek a Companion CD-n). Beállítjuk, hogy az sshd automatikusan induljon a 3. futási szinten, elindítjuk az sshd-t, és átülünk egy Linuxhoz. A továbbiakban ssh-val dolgozunk, mert a Solaris CDE desktop olyan, amilyennek a windowsosok mondják.

  5. Innen kezdve úgy mennek a dolgok, mint Linuxon, kivéve a linkelést. A fentiek szerint előkészített rendszeren a GNU fordító (c++) meglepetésemre a solarisos link editorral akar linkelni. Erőltettem egy darabig a GNU linkert (gld), de azt tapasztaltam, hogy a gld-vel linkelt programok SIGSEGV-znek. Nemcsak a CCC programok, hanem az egysoros "Hello World" C program is. Mivel ezt nem tudtam megjavítani, vissza kellett térnem az eredeti állapothoz, vagyis a /usr/ccs/bin/ld (solarisos) link editorhoz, ehhez viszont néhány scriptet át kellett írni.

    A -Wl,--start-group és -Wl,--end-group opciókat ki kellett hagyni, ez lehet hogy hiányozni fog, de nem találtam meg, mivel helyettesíthető.

    A -shared opció helyett -G kell.

    A -soname=LIBNAME helyett -hLIBNAME kell.

Tudom, hogy a kezdők nem ebből a leírásból fognak UNIX gyakorlatot szerezni, de minek a részletes leírás, ha a részletek úgyis mindig változnak. A fő nehézség, hogy a Solaris viszonylag ismeretlen terep, nem adja könnyen magát. Ha már megvan az mc, és egy kézreálló Linuxról ssh-zunk, fellélegezhetünk.

Időközben teszteltem a CCC-t az ingyenesen letölthető (inteles) Solaris-10 rendszeren is. A helyzet kicsit javult:

Mindezek miatt a CCC installálásával (ami egyébként nem változott) könnyebben el lehet boldogulni.

5.  A csomagok tartalma

Az alcímek mellett zárójelben jelezzük, hogy az adott csomag mely platformokon kap szerepet:
  W   Windows
  L   Linux
  F   FreeBSD
  S   Solaris

5.1.  ccc2.zip (WLFS)

A CCC teljes forráskódja.

5.2.  setup-flex.zip (WLFS)

Az új CCC kiadásban a Flex programok C++ elemző objektumokat készítenek (%option c++). Ennek előnye, hogy az elemző reentráns és szálbiztos, több Flex elemzőt tartalmazó rutin lehet ugyanabban a CCC programban névütközés nélkül. Sajnos ez komplikációkat is okoz, ui. a különféle Linux disztribúciókból származó Flexek különféleképpen hibásak. Ráadásul a Flex új fejlesztési iránya sem valami megnyugtató. A setup-flex.zip csomagból települő flex minden CCC-vel használt fordítóval működik, nem tartalmaz olyan ismert hibát, ami a használatot akadályozná. További részletek magában a csomagban.

5.3.  setup-lemon.zip (WLFS)

A CCC 2.1.x kiadásában a Bison/YACC-ot felváltotta a Lemon. A Lemon a Bisonhoz képest egyszerűbben terjeszthető és telepíthető, mivel egyetlen C forrásfájlból, plusz egy C template fájlból áll. A Lemon által generált kód a Bisonnal szemben reentráns és szálbiztos. A setup-lemon.zip csomag az általam patchelt forrásváltozatot tartalmazza. A változások fel vannak sorolva a lemon.c fájl elején. Az eredeti forrás megtalálható itt: http://www.hwaci.com/sw/lemon.

5.4.  setup-unix.zip (LFS)

A CCC-t nehéz a semmiből kiindulva lefordítani, ui. a fordításhoz CCC-ben készült eszközökre is szükség van. Ez a csomag tisztán C-ből előállítja a build, prg2ppo, ppo2cpp programokat, amik minimálisan szükségesek a CCC saját programkészítő rendszerének a felélesztéséhez.

5.5.  setup-windows.zip (W)

A CCC-t nehéz a semmiből kiindulva lefordítani, ui. a fordításhoz CCC-ben készült eszközökre is szükség van. Ez a csomag tartalmazza a build, prg2ppo, ppo2cpp, ccomp programokat, amik minimálisan szükségesek a CCC saját programkészítő rendszerének a felélesztéséhez. A ccomp program csak a MinGW fordító esetén kell.

5.6.  ccc-fltk.zip (WLFS)

Az Fltk könyvtár forrása Build projekt kiszerelésben. Korábban Linuxon a telepítő csomagból származó Fltk használatát ajánlottam, azonban belefáradtam az API változásainak követésébe, ezért újabban Linuxon is a (befagyasztott) ccc-fltk.zip csomagot használjuk.

A csalódások megelőzése érdekében megjegyzem: A CCC-ben nincs olyan általános CCC-Fltk csatoló, amivel tetszőleges grafikus programokat készíthetnénk. Az Fltk-t arra használtuk, hogy meglevő karakteres programokat jelenítsünk meg grafikus felületen átírás nélkül. Ezek ablakokkal, menükkel, táblázatokkal, adatbeviteli mezőkkel rendelkeznek, de semmi több, pl. nem tudnak rajzolni. Készülni fog viszont egy általánosan használható GTK csatoló.

5.7.  jt.zip (WLFS)

Érdekes új eszköz a Jáva terminál. Ez egy alkalmazásfüggetlen grafikus megjelenítő, ami a felhasználó gépén megjeleníti a távoli gépen futó szerveralkalmazást. Természetesen annak sincs akadálya, hogy a terminál és a szerver ugyanazon a gépen fusson, ám a Jáva terminál fő erőssége a távoli programfuttatás, ezzel a webes programozás egy alternatíváját jelenti. A Jáva terminál elsősorban centralizálandó ügyviteli alkalmazásoknál előnyös, mint pl. egy bolthálózat nyilvántartása. A terminál és a szerver között TCP kapcsolat van (nem HTTP), és XML szintaktikájú üzenetekkel kommunikálnak. A kommunikáció SSL-lel titkosítható. A terminálról bővebb infó található a Jáva Terminál oldalon.

5.8.  jtpython.zip (WLFS)

Python nyelvű szerver oldali interfész könyvtár a Jáva terminálhoz.

5.9.  openssl-xxx.zip (W)

Az openssl könyvtár MSC-vel fordított változata. Legcélszerűbben akkor járunk el, ha a windowsos C fordítónkba ,,integráljuk'' az openssl-t: az include-okat bemásoljuk az include alá, a lib-eket a lib alá, az exe-ket, dll-eket pedig betesszük a Windows könyvtárba.

Megjegyzés: Az openssl-ben le van írva, hogy hogyan kell őt lefordítani MSC-vel, Borland C-vel, és MinGW-vel, nekem azonban csak az első (MSC) működött. Az MSC-vel kapott dll-ek és lib-ek a MinGW-hez egy az egyben jók, a Borland C-nek pedig van eszköze hozzá, hogy egy dll-ből import lib-et csináljon.

5.10.  x-fonts.zip (LFS)

X-hez való fix (bitmap) fontok, amik a Latin-2 kódolású magyar ékezetes karakterek mellett tartalmazzák a Clipper dobozrajzoló karaktereit. A fontfiléket rootként a /usr/lib/X11/fonts/misc-be kell másolni, majd misc-ben végrehajtjuk:
/usr/bin/X11/mkfontdir

Utána az X-et újraindítjuk.

6.  Telepítési problémák

6.1.  Hiányzik az unistd.h

Előfordulhat, hogy NT-s C fordítónk nem talál egy unistd.h nevű filét. Ennek oka, hogy a Bison és Flex kódgenerátora (elsősorban) UNIX-ra készíti a kimenetét, ahol az említett filé megtalálható valahol az include pathban, NT-n viszont nincs ilyen. A hiba legegyszerűbben úgy hárítható el, ha létrehozunk a C fordító include directoryjában egy üres unistd.h-t, ezzel a fordító meg fog elégedni.

6.2.  Hiányzik malloc.h

A CCC programok számos helyen inkludálják malloc.h-t. Az újabb GCC-k erre azt a hibaüzenetet adják, hogy a C szabványban malloc.h megszűnt, és helyette stdlib.h-t kell használni. Csináljunk ilyenkor egy malloc.h-t, ami csendben inkludálja stdlib.h-t.

6.3.  Fltk installáció

Kezdetben Fltk nélkül installáljuk a CCC-t. Ha már van üzemképes CCC környezetünk, akkor le tudjuk fordítani a ccc-fltk.zip csomagban letölthető Build projektet. A jelenlegi változat az összes támogatott C fordítóval fordul (Windowson, Linuxon, Solarison egyaránt).

Az installáció mindössze annyit jelent, hogy a csomag include filéit, és a lefordított lib-eket a C fordító rendelkezésére bocsátjuk. A legegyszerűbben akkor járunk el, ha a C fordítónkba ,,integráljuk'' az Fltk-t: az include-okat bemásoljuk az include alá, a lib-eket a lib alá, ezzel Windowson készen is vagyunk.

UNIX/Linuxon korábban a telepítőkészletből származó Fltk könyvtárat használtuk. Az Fltk fejlesztői azonban állandóan változtatgatják az API-t, ezért az újabb változatok átvételekor mindig a CCC interfész módosítására kényszerültem. Ezt megunván, áttértem a saját, befagyasztott ccc-fltk csomagból fordított Fltk-ra. Hogy a többféle csomag ne keveredjen, a korábban esetlegesen installált Fltk csomagot távolítsuk el.

Az eredeti Fltk függ a GL könyvtártól. A CCC-hez azonban nincs szükség a GL-re, ezért a külső függőségek csökkentése érdekében a mi Fltk könyvtárunkból ki vannak operálva a GL-es hivatkozások. A GL könyvtár helyett egyszerűen az X11-et kell linkelni.

6.4.  Borland cfg filék

A Borland C használata esetén vegyük ki a ccc2 csomagból a usr\options\bor\bcc32.cfg és usr\options\bor\ilink32.cfg filéket, tartalmukat a konkrét include és lib directoryknak megfelelően aktualizáljuk, és másoljuk be a Borland bin directoryba (oda, ahol bcc32.exe is található).

6.5.  Directory nevek

A CCC directory nevének megválasztásakor figyelembe kell venni, hogy a C fordító egyes alkatrészei nem támogatnak minden nevet, amit egyébként az operációs rendszer megengedne. Így pl. a Borland és a Watcom könyvtárkezelő működésképtelen, ha a library teljes specifikációjában kötőjelet is tartalmazó directory van.

6.6.  Nagy fájlok (Large File Support)

UNIX-on a CCC az 1.5.00 változattól kezdve nagy filé támogatással fordítható. Solaris 8-on és 2.4.x kernelű ext2 filérendszerű Linuxon az LFS gond nélkül működik. Nem működik azonban az LFS 2.2.x kernelen, vagy 3.6-nál kisebb verziószámú ReiserFS-en. Ezért a biztonság kedvéért a setup során Linuxon LFS nélküli CCC keletkezik. Az LFS úgy kapcsolható be, hogy az opt filékben beélesítjük a

   -D_FILE_OFFSET_BITS=64
   -D_LARGEFILE_SOURCE

fordítási opciókat, majd az egész CCC-t forrásból újrafordítjuk.

6.7.  GCC verziók

Jelentős változások történtek a C++ szabványban a GCC 2.95 és 3.x változatainak megjelenése között. A CCC a különbségekhez a $CCCDIR/usr/options/lin/gccver.opt filében definiált makrók segítségével alkalmazkodik. Amikor a CCC-t először installáljuk (vagy egy másik C fordítóval teljesen újrafordítjuk), akkor előzőleg le kell törölni a gccver.opt filét. A CCC installáló scriptje észre fogja venni gccver.opt hiányát, és automatikusan elkészíti az aktuális fordítónak megfelelő opt filét.