Kezdőoldal » Számítástechnika » Programozás » A GCC (GNU Compiler Collection...

A GCC (GNU Compiler Collection) hogyan éri el a platformfüggetlenséget?

Figyelt kérdés
Ha valaki eltudná mondani vagy egy (magyar) oldalt belinkelni arról, hogy hogyan működik, hogyan éri el a platformfüggetlenséget a GCC azt nagyon megköszönném!

#programozás #számítástechnika #fordító #GNU Compiler Collection #platformfüggetlenség #operációsrendszerfüggetlenség
2014. ápr. 22. 14:50
1 2
 11/18 anonim ***** válasza:

Ez most nagyon idióta példa lesz, de mondjuk írsz egy progit, ami kiírja a képernyőre, hogy "Hello World!"

Ha ezt x86 (PC) architektúrára fordítod, akkor az ahhoz tartozó függvénykönyvtárakból veszi a fordító, hogy hogyan is kell bármit is kírni, és az a kód fog bekerülni a progiba.

Ha ugyanezt valami ARM-szerű, androidos mobil platformra fordítod, akkor meg az ehhez tartozó könyvtárak vannak megadva a fordítónak, hogy ezeket használja. Ugyanazt az utasítást fordítja, de az implementációt (assembly kódsorozatot) egy másik könyvtárból (lib-ből) veszi.


A fordítónak meg kell adni, milyen libeket használjon. (Rendszerint azokat, amikhez a header fájlokat be-includoltad.) Ilyenkor dől el, milyen platformra fordul.


Aztán hogy ez minden esetben működik-e, azt nem tudom, de elvileg igen. :)

2014. ápr. 22. 17:59
Hasznos számodra ez a válasz?
 12/18 anonim ***** válasza:
Pontosabban nem csak a libek, hanem maga a fordító is platformhoz kötött, tehát a megfelelő fordítót kell használni (hiszen pl. egy Harvard architektúrán másképp működik pl. a függvényhívás, stack, címzések, stb., mint x86-on), de ugyanazt a forráskódot használhatják.
2014. ápr. 22. 18:03
Hasznos számodra ez a válasz?
 13/18 A kérdező kommentje:
köszönöm a válaszokat!!!
2014. ápr. 22. 21:23
 14/18 A kérdező kommentje:

Összefoglalva:

Ha van egy programom ×86-os architektúrán készítve, van egy leportolt GCC fordítóm és a hozz egy ASM generálóm egy adott más architektúrán, megadom a fordítónak, hogy az "új" libeket használja. Mivel az utasítások viszont ugyanazok a program láss csodát ELINDUL!

De ha rosszul értettem javítsatok ki!

2014. ápr. 24. 17:58
 15/18 A kérdező kommentje:
Ja, és ekkor már op. rendszerfüggetlen is ügye???
2014. ápr. 24. 19:37
 16/18 anonim ***** válasza:

Az operációs rendszer függetlenség más kérdés.


A standard input, memóriakezelés, stb. úgy vannak megalkotva, hogy operációs rendszer függetlenek legyenek.


Ez a gyakorlatban azt jelenti, hogy ha ezek használatával alkotsz meg bármilyen programot, az rendszerfüggetlen lesz.


Kizárni viszont nem zárja ki a rendszerfüggőséget a C++ szabvány. Ez a gyakorlatban azt jelenti, hogy a C++ programok egy részhalmaza rendszerfüggetlen is.


Ha viszont az egész nyelv nem lenne rendszerfüggő, az azt jeleneté, hogy maga a nyelv nagyon korlátozott képességű. Hiszen, ha a nyelv teljesen rendszerfüggetlen lenne, akkor nem tudna olyan hardvereket és szoftvereket használni, amik a szabványban nincsenek rögzítve. Tehát pl. ha a C++ szabványban nincs benne, hogy hogyan kell kezelni egy USB-s egeret, akkor ezt nem lehet rendszerfüggetlen módon megoldani. Ebből kifolyólag a rendszerfüggetlenség azt jelentené, hogy nagyon korlátozottan tudnád használni a nyelvet.


Vagyis a C++ hál' istennek nem rendszerfüggetlen. :)

2014. ápr. 24. 22:09
Hasznos számodra ez a válasz?
 17/18 anonim ***** válasza:

Na igen, egyrészt a lefordított kódnak meg kell felelnie egyrészt az architektúrának, másrészt az oprendszernek, ami alatt futni fog. Ezek azért a gyakorlatban összepárosíthatók, mert pl. x86-ra leginkább Win vagy Linux alá fordítunk, ARM-re Android alá, stb. Se az tény, hogy mindkettő fontos.


Amikor egy rendszeren, pl. Windowson fordítasz Windowson futó progit, az az alap eset. Ha mondjuk Windowson fordítasz Linux alá szánt progit, akkor az ahhoz szükséges fordítót hívják "keresztfordítónak", vagy cross-compilernek. Ehhez valóban a Linux-os libek kellenek, de egy ugyanilyen fordító is kell. Tehát a teljes kereszt-fordító "csomag". Ilyen cross-compiler-eknél meg szokták adni a "target" rendszert, tehát hogy milyen környezetben, milyen oprendszer alatt futó kódot generál. (Vagy néha oprendszer nincs megadva, mert pl. valamilyen konktroller IC-be való kódot fordít, ahol mondjuk nincs semmilyen oprendszer. Vagy épp egy oprendszert írunk/fordítunk. :D)

2014. ápr. 25. 09:24
Hasznos számodra ez a válasz?
 18/18 A kérdező kommentje:
#16. válaszolónak: teljesen igazad van, csak rosszul fogalmaztam nem arra gondoltam h maga a program lesz rendszerfügetlen hanem hogyha azokat megcsinalom amiket leírtam az osszefoglalásba akkor már mindegy h milyen op. rendszer van a gépen
2014. ápr. 25. 10:39
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!