Használata GNU C fordító
GCC alapjai
GCC fordító része a Free Software Foundation GNU. GCC fejlesztett nyílt forráskódú fejlesztőkörnyezet Odom, mint minden a GNU eszközök, és támogatja a különböző platformok, köztük AIX. GCC jelentése gcc (gcc) és számos programozási nyelvek, mint a C, C ++, Objective C, Fortran és Java. Ebben a cikkben fogjuk vizsgálni a GCC 3.3.4 verzió és az összes verzió 3.4 AIX változat 5.1, 5.2 és 5.3.
Összehasonlítás GCC fordító fordítóprogram XL C / C ++
De vannak olyan helyzetek, amikor a használata GCC előnyösebb lehet. Amikor egy alkalmazás írt használatával az API szabványos és alkalmazásával összeállított a fordító vagy GNU gcc g ++. port, hogy a különböző platformok sokkal egyszerűbb. GCC külső kapcsolódási pontok a különböző programozási nyelvek, amelyek megkönnyítik elemezni a kódot ezeken a nyelveken. GCC egy hordozható fordító és fut a legtöbb platformon elérhető ma, és ezzel egyidejűleg támogatja a legtöbb 64 bites processzorok. GCC egy platform-függő határon fordító, amely képes lefordítani bármilyen programot a futtatható bármely platformon, akár eltérő az, ahol dolgozik GCC fordító. Ez lehetővé teszi, hogy lefordítani a szoftvert a beágyazott rendszerek, amelyek nem rendelkeznek a lehetőséget, hogy a fordító. GCC C-nyelven írt egy nagy hangsúlyt fektet a hordozhatóság és állíthatja össze magát; Ez fordító könnyen alkalmazkodik az új rendszereket. Végül GCC biztosítja a szabadságot, hogy javítsa a GCC és egyéb GNU szoftver által létrehozott külső fejlesztők.
Kísérletek támogatás fejlesztők végre az alkalmazások különböző platformokon különböző fordítóprogramok ezeken a platformokon, ritkán érnek véget sikeresen. Ha ehelyett használni a GCC fordító által támogatott számos platformon, akkor csökken a kapcsolódó problémák számhordozás alkalmazások egyik platformról a másikra. GCC megkönnyítheti programozási munkát azáltal, hogy közös keretet összeállítása a különböző platformokon. G ++ is már közelebb teljes mértékben megfelel az ISO / ANSI C ++ szabvány.
Megjegyezzük, hogy a hagyományos AIX operációs rendszer nem érti a GCC make-fájlokat. Annak érdekében, hogy képesek legyenek letölteni GCC fordító AIX, az szükséges, hogy az operációs rendszer már a GNU make-fájlokat. Annyit kell tennie, hogy -v parancsot, hogy megtudja, mit kell fordítani a GCC.
Kompatibilitás bináris AIX 5L
Az IBM biztosítja a kompatibilitást a bináris változatai az operációs rendszer AIX 5.1, AIX 5.2 és AIX 5.3. Következésképpen futó alkalmazások AIX 5.1 vagy AIX 5.2, működni fog ugyanúgy és a változat 5.3, ha a fejlődésük elérték a meghatározott kritériumokat a dokumentum az IBM AIX 5L bináris kompatibilitást. Hozzá kell tenni, hogy a független szoftvergyártók (ISV a jövőben) különböző módon támogatja az új operációs rendszer. A legtöbb vezető ISV tesztelhetik alkalmazásaik kompatibilitását az új operációs rendszer, általában néhány sor vizsgálatok, amelyek a befejezése a ISV támogatását fejezte ki az új operációs rendszer. Azonban más ISV vizsgálták részletesen kritériumok kompatibilitása bináris szintű kód IBM által kifejlesztett, és ha azok alkalmazása megfelel ezeknek a kritériumoknak, akkor azt kompatibilis az új operációs rendszer. Mindkét esetben nincs szükség újrafordítani alkalmazások alatti használatra OS AIX 5.3.
Telepítése GCC AIX
Telepítse GCC AIX egyszerűen - ehhez csak a bináris kód megfelelő változatát GCC. A bináris fájlok letölthetők Bull AIX ral. Az IBM AIX Toolbox for Linux alkalmazások oldalon. vagy UCLA AIX Software véleményét! online könyvtári. A letöltés után a megfelelő bináris fájl, meg kell változtatni a hozzáférési mód, hogy a letöltött fájlt a chmod paranccsal. hogy ez végrehajtható, és futtassa SMIT telepíteni. A Web-site UCLA egy bináris kód GCC 3.3.4 verzió AIX 5.1. GCC 3.3.4 verziója kompatibilis bináris szinten AIX 5.2. A GCC 3.3-as verziója már támogatja a teljes AIX 5.2.
Abban a pillanatban, a helyszínen az IBM AIX Toolbox for Linux alkalmazások GCC 3.3.2 bináris AIX 5.1 operációs rendszer és a 5.2. Az oldalon is van egy bika Freeware GCC 3.3.2 verzió Windows AIX 5.2.
Meg kell győződnie arról, hogy a telepített GCC, megfelelő változat AIX. GCC határozza meg a saját példányát néhány fejléc fájlokat kell integrálni megfelelően a header fájlokat AIX normális működéséhez a GCC, kivéve, ha a fordító lehet hibaüzenetek társított fejléc fájlokat. Header fájlok, ha nem születik megállapodás, újra kell elrendezni. Törölheti a cache header fájlt, hogy össze egy új kiadás a régi GCC forráskód, de GCC nem fog működni anélkül, hogy a cache fejléceket.
Linkek web-oldalak
További teljes körű tájékoztatást a GNU Projekt és a GCC fordító kellene látogatnia a hivatalos honlapján. Az új funkciók listája GCC 3.3-as verziója elérhető ezen a linken. Továbbá, az új funkciók a GCC 3.4.3 verzió elérhető itt.
GCC fordító opciók
számos fordítási lehetőség áll rendelkezésre GCC, kezdve optimalizálja a kódot, összeállítják, az ISO / ANSI szabványok vagy anélkül ezek a hibakeresés opciók összeállítása lehetőségek sablon kódját. GCC is nyújt különleges lehetőségek pSeries (egykori RS / 6000) és a PowerPC platformokon.
Teljes leírás a rendelkezésre álló lehetőségek a POWER platformon PowerPC gépek helyezni a web-oldal. Az alábbiakban nézzük meg néhány lehetőséget, hogy igen fontosnak tekintik.
A lehetőségek, amelyek segítségével beállíthatja a processzor típusát, például, és -mcpu -mtune. jobb a szabványos lehetőségek GCC által. AIX 4.3 AIX 5.1 szabvány opciók -mcpu = gyakori - ez a kód működik minden számítógép a processzor család pSeries (RS / 6000). AIX 5.2 és későbbi változatai, a szabványos lehetőség -mcpu = PowerPC - ez a kód fog futni pSeries PowerPC processzorokat. GCC vesz egy modern processzor típusa kapcsolatos jelenlegi verzió AIX, mint a processzor modell ütemezési feladatokat.
Ahhoz, hogy optimalizálni egy adott processzor vagy osztály processzorok kell használni -mcpu = teljesítmény lehetőségeket. -mcpu = Power2. -mcpu = PowerPC. -mcpu = Power4 és mások. Ne használjon -mpower opciót. -mpowerpc. -mpower2 vagy -mpowerpc64. Annak ellenére, hogy nem állnak rendelkezésre, azok nem használhatják a végfelhasználó által. A használata külön -mpower2 vagy egyéb lehetőségek opciók vezethet kiszámíthatatlan eredményeket, mert a fordító lehet inkompatibilis módban, a cél processzor.
A fordításhoz az alkalmazás 64 bites módban használja a lehetőséget -maix64. amely aktiválja a 64 bites gép interfész (ABI később) AIX, például a 64 bites mutató, 64-bit hosszú fajta, és a szükséges infrastruktúrát, hogy támogassa őket. Telepítés -maix64 jár telepítés -mpowerpc64 és -mpowerpc. mivel -maix32 letiltja a 64 bites opciót és ABI -mno-powerpc64. alapértelmezett GCC -maix32.
Ha hibaüzenet jelenik meg a kapcsoló, amely megállapította, hogy a zsúfolt hely áll TOC (Table of Contents - tartalomjegyzék), csökkenti a TOC tér segítségével -mminimal-toc parancsot. Alapértelmezésben GCC -mfull-toc. amely rendelkezésre bocsátja legalább egy TOC-rekord minden egyedi nem automatikus változó referencia. GCC is hozza a TOC lebegőpontos állandók. Azonban csak 16 384 darab a tartalomjegyzékben, és így nagyon is lehetséges, hogy töm. Opció -mminimal-toc GCC lehetővé teszi, hogy egy vonalban az egyik eleme a TOC egy funkció.
-pthread összeállítja és alkalmazás könyvtár POSIX szálak azonos módon, mint ez elvégezhető egy közegben VisualAge (vagy XL) C / C ++. A VisualAge (vagy XL) C / C ++ podderzhkt jelfolyamokat végre összeállítása és összekapcsolása segítségével xlc_r opciók vagy xlC_r. de ezek a megoldások nem működnek GCC. Ezért a GCC kódot szál támogatás kell konfigurálni -pthread. Opció -pthread telepítse a megfelelő zászlók mindkét előfeldolgozó és kapcsoló.
A -g teremt hibakeresési információkat jellemző -gxcoff + 2. szint hibakeresés információt tartalmazhat néhány extra információt a GNU Debugger (GDB). Ahhoz, hogy a hibakeresési információkat jobban összeegyeztethető AIX dbx. használja a -gxcoff.
GCC AIX nem támogatja teljes mértékben -msoft-float opciót. Ezen opció használata leállítja a használata lebegőpontos regiszterek a GCC, de ugyanakkor GCC támogató könyvtár és AIX könyvtár továbbra is használni lebegőpontos regiszterek.
Opciók használata -mlittle-endian és -mcall-linux AIX konfiguráció nem megfelelő. A dokumentáció tartalmazza az összes lehetőséget célrendszert „RS6000” GCC. De nem minden opció áll rendelkezésre használható bármely adott konfigurációt.
A pass opciók közvetlenül a platform-specifikus linker AIX, használja -Wl,
Options fordító G ++ és a GCC
Leírás különleges lehetőségek a g ++ fordítóprogram található ezen a linken. Ezek a beállítások érvényesek AIX.
A gcc fordítóhoz tartozó opciók teljes leírását a weboldalon is fel kell tüntetni. Ezek a beállítások az AIX és más UNIX rendszerekre is érvényesek.
Az optimalizálási lehetőségek listája az oldalra kerül.
A legáltalánosabb optimalizálási lehetőség az -O2. amely lehetővé teszi a végrehajtható fájl vagy könyvtár teljesítményének növelését. Az O3 több olyan optimalizálási képességet biztosít, amely hosszabb összeállítási folyamaton keresztül növelheti a teljesítményt. -A növeli a teljesítményt és ugyanakkor megpróbálja csökkenteni a kód méretét.
A komplex tudományos számításokhoz hasznos kiegészítő optimalizálási lehetőségek: -funkció-hurkok és -teljes matematika. -ffast-matek. és lehetővé teszi a fordító számára a teljesítmény növelését azáltal, hogy pontosan megfelel az IEEE és az ISO szabványoknak a matematikai funkciókhoz.
AIX és Unix System V megosztott könyvtárak
Nézzük először nézd meg a különbségeket AIX és Unix System V tartozó, a megosztott könyvtárban, majd elmagyarázza, hogyan kell használni a GCC, akkor hozzon létre egy megosztott könyvtár AIX.
Az AIX és a Unix System V eltérő módon kezeli a megosztott hozzáférési könyvtárakat. Az AIX alapvetően úgy kezeli a megosztott hozzáférési objektumokat, mint teljes mértékben kapcsolt és teljes entitásokat, amelyekben a névre vonatkozó hivatkozások építéskor jóváhagyásra kerülnek, és nem változtathatók meg indításkor. A Unix System V a megosztott objektumokat rendes objektumfájlként látja, amelyben a globális változók nevét a linker a futás idején jóváhagyja. Azonban AIX képes tenni az elrendezés a futási időben (run-time összekötő (RTL)), így a változó nevek bizonytalan marad, amíg a boot, amely megkeresi a szükséges vizsgálatokat az összes betöltött modulokat.
Az AIX megosztott modulja objektumfájl vagy archív fájl lehet, amely tartalmazhat modulokat a megosztáshoz és / vagy a közönséges objektumfájlokhoz. A Unix System V rendszerben a megosztott könyvtárak mindig olyan hagyományos fájlok, amelyeket speciális beállításokkal hoztak létre.
Az GCC fordítóhoz a megosztott könyvtárat a gcc -share paranccsal hozza létre. A linker automatikusan exportálja a nevét néhány elem, de ha azt szeretnénk, hogy export több elemet használja AIX ld -bexpall csapat. Az aláhúzás alá eső nevek nem kerülnek automatikusan exportálásra. Az AIX 5.2 vagy AIX 5.1 rendszerben, a második karbantartási szinten (2. karbantartási szint) használhatja az új build opciót -bexpfull. amely exportálja az összes nevet, és nem fogja figyelmen kívül hagyni az aláhúzással kezdődő neveket (például a megváltoztatott neveket C ++-ban). A teljes ellenőrzés érdekében a legjobb, ha létrehoz egy exportfájlt. Ha a programozó nem ismeri AIX export fájlokat, akkor olvassa el a dokumentum AIX összekapcsolása és betöltése Mechanizmusok (Mechanizmusok elrendezés és AIX letölthető) (PDF 184KB).
Mint fentebb említettük, a gcc -shared parancs létrehoz egy kemény kódolt objektumot az AIX stílusban a megosztáshoz. A gcc -shared meghívja az AIX linkert a -bM opcióval: SRE -bnoentry. Ezért nem szükséges kombinálni a két AIX opciót.
Az -brtl használata esetén az AIX hivatkozó az .a és az .so kiterjesztésekkel rendelkező könyvtárakat keres. például libfoo.a és libfoo.so. Az -rrtl opció nélkül az AIX linker csak a libfoo.a-t keres. Készítsen libfoo.a egyszerű archiválás célja többszörös hozzáférés, vagy átnevezni célkitűzése a közösségi hozzáférést libfoo.a - AIX fontos, hogy egy utótag .a. Ahhoz, hogy használni AIX csomag futásidőben, akkor használd ezt a parancsot gcc -shared -Wl, -G létre többszörös hozzáférés egy objektumot, majd a könyvtár, azaz, hozzátéve -Wl lehetőség, -brtl az elrendezés paranccsal hozzon létre egy futtatható fájl. Technikailag nem használhatja a megosztott opciót. Ez a lehetőség azonban ártalmatlan, és csökkenti a zavart.
Ha azt szeretnénk, hogy hozzon létre egy objektumot közös használatú a GCC kell, de csak a gcc -shared és esetleg lehetőség -bexpfull vagy exportfájlt hivatkozva magát -Wl. -bE:
Lehetséges problémák GCC / G ++ használata AIX rendszeren
Íme néhány lehetséges probléma, amelyek akkor találkozhatnak, ha GCC-t vagy G ++-t használ az AIX rendszeren. Minden egyes problémára leírást adunk, majd megmutatjuk, hogyan oldhatja meg.
Ez a hiba azt jelezheti, hogy a lemez tele van, vagy hogy az ULIMIT környezeti változó nem teszi lehetővé a fájlnak a kívánt méret elérését.
a linker egy nem definiált foo-t jelent. Bár ez a viselkedés eltér a legtöbb egyéb rendszertől, ez nem téves, mivel egy külső változónak egy statikus változóba történő újradefiniálását az ANSI C nem határozza meg.
Az alábbiakban egy példát mutatunk be, ha mindegyik szálnak elég nagy stackmérete van, és a megfelelő makefile, amelyet az GCC egy olyan program összeállításához használ, amely pthreadeket használ.
A tömb a veremen van elosztva, nem az adatszektorban. A probléma a patak méretéhez tartozik. Az alapértelmezett veremméret növeléséhez használja a megfelelő pthread funkciókat. A #ifdef _AIX nélkül a programkód a dump fájlba kerül.
Források letöltése
Kapcsolódó témák
- "A GNU C / C ++ fordító használata az AIX rendszeren: az eredeti cikk.
- GCC Gnu honlap. weboldal részletes információkkal az GCC-ről. (EN)
- Bull AIX Freeware. különböző nyílt forráskódú szoftverek AIX számára.
- IBM AIX Toolbox Linux alkalmazásokhoz. A letöltési információk ezen az oldalon találhatók.
- A developerWorks AIX és UNIX zóna több száz informatív cikket tartalmaz az alap-, közép- és felsőfokú olvasók számára.