A c, c, objektív c gcc 2 fordítója

A következőkben a GNU CC Unix rendszerre történő telepítésének egyik eljárása. Lásd: [VMS-telepítés], VMS rendszerek esetén. Ebben a részben azt gondoljuk, hogy ugyanabban a könyvtárban fordul elő, amely tartalmazza a forrásfájlokat; lásd: [Egyéb könyvtárak], hogy megtudja, hogyan kell fordítani egy különálló könyvtárban a Unix rendszeren.







Ha GNU CC-t használ a GNU assemblerrel (GAS), akkor ezt a `-c-gnu-as 'opciót a` configure' futtatásakor kell megadnia.

Ezzel az opcióval nem telepíti a GAS-t. Csak a GNU CC kimenetét változtatja meg, így működik a GAS. A GAS építése és telepítése az Ön feladata.

Ezzel szemben, ha nem szeretné használni a GAS-t, és nem adja meg a `--with-gnu-as '-ot a GNU CC építésénél, akkor a feladata annak biztosítása, hogy a GAS nincs telepítve. A GNU CC egy programot keres a néven, mint a különböző könyvtárakban; ha a program, amit talál, a GAS, akkor elindítja a GAS. Ha nem vagy biztos benne, hogy hol található a GNU CC az általa használt összeszerelő, próbálja meg megadni a `-v 'parancsot, amikor elkezdi.

A rendszer, ahol fontos, hogy használ-e GAS: `hppa1.0 mindenáron bármilyen '` hppa1.1 mindenáron bármilyen', `i386-any-sysv '` i386-any-ISC', `i860-lyubaya- BSD ' `m68k-bika-sysv',` m68k-HP-HPUX ' `m68k-Sony-BSD',` m68k-Altos-sysv ' `m68000-HP-HPUX',` m68000-att-sysv ' `any-lynx-LynxOS 'and` mIPS minden'). Bármelyik más rendszerben a `--with-gnu-as'-nak nincs hatása.

A rendszer a fent felsorolt ​​(kivéve a HP-PA, ISC 386 és `MIPS SGI-irix5. * '), Ha a GAS, akkor is használja a GNU linker (és adja a` --with- gnu-ld' ).

Adja meg a `--with-gnu-ld 'opciót, ha a GNU kapcsolatot GNU CC-vel kívánja használni.

Ez a beállítás nem kényszeríti a GNU linker telepítését; csak a GNU CC viselkedését változtatja meg úgy, hogy a GNU linkerrel működjön. Különösen megtiltja a `collect2 'program telepítését, amely egyébként a legtöbb rendszer konfigurációjában a rendszer-linker külső interfésze.

A rendszerek alapján az MIPS, és az Alpha rendszerek meg kell határoznia, GNU CC létre kell hozni egy normális hibakereső méret ECOFF vagy a BSD-stílusú leszúrja áthaladt szimbólumtáblát ECOFF. Normál ECOFF hibakeresési méret nem tudja teljes mértékben kezelni eltérő nyelvek C. BSD stab'ov méret képes kezelni más nyelveken, de ez csak akkor működik a GNU debugger - GDB.

Általában a GNU CC alapértelmezésben a hibakeresési ECOFF formátumot használja; ha kedveli a BSD stabeket, adja meg a `--with-stabs 'beállítást a GNU CC beállításakor.

Függetlenül attól, hogy mit válasszon az alapértelmezett, amikor beállítja a GNU CC, a felhasználó használhatja az opciók `-gcoff„and` -gstabs +”, hogy határozza meg kifejezetten a hibakeresés formátum egy adott összeállítás.

A `--with-stabs 'értéke szintén az ISC-rendszerben van 386-ban, ha" gázzal "történik. Ez magában foglalja a debug információk stab'ov beépítését a kimenetele COFF'a. Ezt a fajta hibakeresési információt jól támogatja a C ++; A szokásos COFF hibakeresési adatok nem ezt teszik.

A `--with-stabs 'szintén fontos az SVR4-et futtató 386-os rendszereken. Ez magában foglalja az ELF'a kimenetébe beépített debug információs stab'ov használatát. A C ++ fordító jelenleg (2.6.0) nem támogatja a DWARF hibakeresési információkat, amelyeket általában a 386 SVR4 platformon használnak; a szúrás biztosítja a munkát. Gázra és gdb-ra van szükség, mivel a hagyományos SVR4 eszközök nem képesek létrehozni vagy értelmezni a botokat.

A következő típusú CPU-k felsorolása az alábbi:

Az alábbiak a felismerhető cégnevek. Amint látja, a szokásos rövidítéseket gyakrabban használják, mint a hosszabb hivatalos nevek.

A vállalat neve csak a kétértelműségek megoldására fontos, ha a megadott információk nem elegendőek. Ha nem szükséges, csak a "processzor-rendszert" írhatja le. Például a "vax-ultrix4.2" egyenértékű a "vax-dec-ultrix4.2" -sel.

Az alábbiakban felsoroljuk a rendszer típusát:

El lehet hagyni a rendszer típusát, majd a `configure 'kitalálja az operációs rendszert a processzorból és a vállalattól.

Hozzáadhatja a verziószámot a rendszer típusához; lehet vagy nem tud különbséget tenni. Például írhatsz `bsd4.3 'vagy' bsd4.4 '-et a BSD verziók megkülönböztetésére. A gyakorlatban a verziószám szükséges a `sysv3 'és` sysv4' fájlokhoz, amelyeket gyakran másképpen kezelnek.

Ha megadja az "i860-dg-vms" típus lehetetlen kombinációját, hibaüzenetet kaphat a `configure'-ból, vagy figyelmen kívül hagyhatja az információk egy részét, és a lehető legtöbbet tesz a többivel. A `configure 'mindig kinyomtatja a használt változat kanonikus nevét. A GNU CC nem nyújt minden lehetséges lehetőséget.

Gyakran egy egyedi gépmodellnek van neve. Számos gépnév elnevezése álnévként ismert a processzor / vállalati kombinációk számára. Van egy ismert gépnevek táblája:

Ne felejtsük el, hogy a gép neve meghatározza mind a CPU típusát, mind a vállalat nevét. Ha saját gyártási saját konfigurációs fájljait szeretné telepíteni, akkor a helyi neveket használhatja a cégnévnek a hivatkozáshoz. Ha a "processzor-helyi" konfigurációt használja, a konfigurációs név a processzor előtag nélkül kerül felhasználásra a konfigurációs fájl nevének létrehozásához.







Így, ha az Ön által megadott `m68k-lokális, a konfigurációt használja file` m68k.md ',` local.h ' `m68k.c',` xm-local.h ' `t helyi' és' x- local ', minden a `config / m68k' könyvtárban.

Ha objektumokat és végrehajtható fájlokat szeretne létrehozni egy másik könyvtárban a forrásfájlokból, az alábbiakban azt kell tennie, hogy másképp tegye meg:
  1. Győződjön meg róla, hogy van olyan Make verzió, amely támogatja a `VPATH 'képességet. (A GNU Make támogatja, ahogy a Make a legtöbb BSD rendszeren.)
  2. Ha a forrás könyvtárban valaha is `configure 'fut, akkor meg kell szakítania a konfigurációt. Tegye ezt:
  3. Keresse meg azt a könyvtárat, ahol a fordítót a konfiguráció végrehajtása előtt szeretné felépíteni: A rendszereken, amelyek nem támogatják a szimbolikus hivatkozásokat, a könyvtárnak ugyanabban a fájlrendszerben kell lennie, mint a forráskönyvtár.
  4. Adja meg, hogy hol találja meg a `configure'-ot: Azt is mondja, hogy 'konfigurálja' hol találja meg a fordító forrását; A `configure 'egy könyvtárat veszi fel a fájl nevéből, amelyre felhívta. De ha biztos akar lenni, megadhatja a forrás könyvtárat a `--srcdir 'opcióval. A `--srcdir 'által megadott könyvtárnak nem kell ugyanaz a könyvtár, mint` configure'. Ezzel a könyvtárban `make 'futtatható. Ne ismételje meg a fenti konfigurációs lépéseket, ha rendszerint megváltoztatja a forrásfájlokat. A konfiguráció újbóli végrehajtásához azonban meg kell változtatnia a konfigurációs fájlokat, ha a rendszer nem támogatja a szimbolikus linkeket.
A GNU CC CrossCompiler-ként működhet sok gép számára, de nem mindenki számára.
  • A lebegőpontos különböző formátumú gépek közötti fordított fordítóprogramok nem működnek. A GNU CC most lebegőpontos emulátorral rendelkezik, amellyel dolgozni tud, de a célgép minden leírását módosítani kell, hogy kihasználhassa ezt az előnyöket.
  • A különböző méretű gépek közötti keresztmásolás némileg problémás, és néha nem működik.

Mivel a GNU CC generálja az assembler-kódot, valószínűleg szükség van egy keresztösszeszerelőre, amely lehetővé teszi a GNU CC végrehajtását, és objektumfájlokat generál. Ha nem szeretne kapcsolódni a célgéphez, akkor is szükség van keresztkötőre. Szüksége van továbbá a célgépnek megfelelő fejlécfájlokra és könyvtárakra is, amelyeket a fogadó gépre telepíthet.

A kereszt-összeállítás lépései

Számítógépes programok összeállítása és végrehajtása több lépésben történik:
  • Futtassa a gyűjtőkészüléket a gazdagépen, hogy összeszerelő fájlokat generáljon a célgép számára. Ehhez a célgép fejlécfájljai szükségesek.
  • A fordított fordító által készített fájlok összeállítása. Ezt megteheti az összeszerelő a célgépen, vagy egy átkapcsolás a fogadó gépen.
  • Kapcsolja össze ezeket a fájlokat egy végrehajtható fájl létrehozásához. Ezt megteheti egy linkerrel is a célgépen vagy egy keresztkötőgépen a fogadó gépen. Bármelyik gépet is használja, szükség van könyvtárakra és bizonyos indítási fájlokra (általában 'crt. O') a célgépre.
A legegyszerűbb, ha mindezen lépéseket ugyanazon a gépen végzi, mivel mindezt egy GNU CC hívás során teheti meg. Ehhez megfelelő keresztszalag és térhálósító szükséges. Néhány célzott GNU-géphez rendelkezésre áll az összeszerelő és a linker.

CrossCompiler konfigurálása

Ahhoz, hogy a GNU CC-t keresztösszekötőként felépíthesse, akkor a `configure'-val indul el. Használja a `--target = target 'billentyűt a célgép típusának megadásához. Ha a `configure 'nem tudta megfelelően azonosítani azt a rendszert, amelyen végrehajtotta, akkor a` --build = building' szót is megadja. Például az alábbiakban bemutatjuk, hogyan lehet konfigurálni egy olyan, a HP 68030 rendszert kódolókészüléket egy BSD rendszerrel, amelyet a `configure 'helyesen azonosít:

Szerszámkészletek és könyvtárak a Crosscompilator számára

Ha kereszt-összeillesztőt és térhálósítót használ, most telepítenie kell őket. Helyezze őket a `/ usr / local / target / bin 'könyvtárba. Van egy olyan eszközcsomag, amelyet be kell illesztenie ehhez a könyvtárhoz: `as '

Egy crossovernek kell lennie.

Keresztkötőnek kell lennie.

Keresztleválasztónak kell lennie: olyan program, amely képes kezelni az archivált fájlokat (linker könyvtárakat) a célgép formátumában.

Olyan programnak kell lennie, amely ID-táblát hoz létre egy archív fájlban. A GNU CC telepítésével megtalálja ezeket a programokat ebben a könyvtárban, és másolhatja vagy összeírhatja azokat a megfelelő helyekre a crosscompiler számára, hogy később megtalálja azokat a végrehajtásban.

A fájlok legegyszerűbb módja a Binutils és a GAS csomag összeállítása. Konfiguráld őket ugyanazokkal a `--host 'és' -target 'karakterekkel, amelyeket a GNU CC beállításához használsz, majd építsd fel és telepítsd őket. Automatikusan telepítik a végrehajtható fájlokat a megfelelő könyvtárban. De nem támogatják a GNU CC által támogatott összes célgépet.

Ha keresztkódolókkal, például a standard C könyvtárral kívánja használni a könyvtárakat, akkor helyezze őket a `/ usr / local / target / lib 'könyvtárba; A GNU CC telepítése az alkönyvtár összes fájlját átmásolja a megfelelő helyre, hogy a GNU CC megtalálhassa és linkelhesse őket. Az alábbiakban bemutatjuk a könyvtárak több példányának másolását a célgépről:

A szükséges könyvtárak pontos helyzete és helyük a célgépen nagyon függ az operációs rendszertől.

Számos célgépnek szüksége van "crt0.o" és "crtn.o" típusú "start fájlokra", amelyek minden egyes végrehajtható fájlhoz kapcsolódnak; azokat szintén be kell helyezni a / usr / local / target / lib könyvtárba. A `crt0.o 'lehetõség számos lehetõséggel használható egy profilhoz vagy más összeállításhoz. Az alábbi példa példázza a fájlok másolását a célgépről:

A keresztszerkesztő valódi építése

Mostantól folytathatod, ahogyan akkor, amikor egy fordítót építettél egy géphez az 1. szakasz felépítésével. Ha megadtad a "libgcc1.a" opciót. akkor az összeállítás megszakad abban a pontban, ahol ez a fájl szükséges,

ugyanazt jelenti a natív és a fordított fordítók számára. Ez a hely, ahol a GNU CC tárolja a személyes fejlécfájljait, és ahol a GNU CC rögzített fejlécfájlokat tárol. A GNU CC keresztkötéses futtatásai a "$ (tooldir) / include" fejlécfájlokat tartalmazzák. (Ha a keresztkötésű fejlécfájlokat rögzíteni kell, akkor a GNU CC beépítése előtt telepíteni kell őket. Ha a keresztkötésű fejlécfájlok már rendelkezésre állnak az ANSI C és a GNU CC számára, akkor nincs semmi különös.)

ugyanazt jelenti a natív és a fordított fordítók számára. Ez az a hely, ahol a g ++ először néz ki, fejlécfájlok keresése. A libg ++ csak a gépfüggetlen fejlécfájlokat telepíti ebben a könyvtárban.

Csak a natív fordítóhoz használható. Ez általában "/ usr / local / include". A GNU CC vizsgálja ezt a könyvtárat, így a felhasználók beállíthatják a fejlécfájlokat a / usr / local / include könyvtárba.

Ezt csak a keresztkompilerhez használják. A GNU CC itt semmit sem telepít.