ako sa prekompiluje operačný systém napísaný v C a C++ atď.. ako je napr. Linux
...musí mať v sebe kompilátor ak áno ako ho zohnali .... pokiaľ neurobili vlastný v resp. ako to funguje....berte do úvahy že mám 15 a zaujímam sa o to prosím napíšte......AKO
@KubboX
neviem čo myslíš tým že "musí mať v sebe kompilátor"...
...ale skompilovať kód môžeš LEN pomocou kompilátoru. nemusí byť vyslovene súčasťou systému, a pokiaľ viem, tak ani nebýva, dokonca ani pri linuxe, máš ho skrátka len ako ďalší program.
a neviem čo myslíš tým "ako"... pýtaš sa čo presne je samotný proces kompilácie, alebo ako prebieha prekompilovanie v prípade linuxu, keď si updatuješ kernel, povedzme?
ale... ako kompilátor zohnali? tak isto ako hocijaký iný program: kúpili/stiahli od niekoho kto ho spravil.
kompilátor nie je ničím špeciálny, je to program ako každý iný, jeho funkciou je v zásade konverzia dát, vezme súbor napísaný v nejakom programovacom jazyku (ZDROJOVÝ kód), a vypľuje súbor v STROJOVOM kóde, čo je v zásade stále len programovací jazyk, až na to že tak nízkolevelový, že mu rozumie priamo hardvér.
predstav si to takto: niekto ti povie "choď do kuchyne", to je zdrojový kód ktorý ti dotyčný človek dostal. tvoj mozog je kompilátor (a tvoje telo procesor), a tvoj mozog tento pre telo nezrozumiteľný a neurčitý pokyn preloží do (veľmi, veľmi dlhej) série nervových impulzov (strojového kódu), ktoré spôsobia striedavé sťahovanie a uvoľnovanie svalov na nohách, ktoré sa prejaví kráčaním, ktoré ťa do kuchyne prepraví.
...ako presne konverzia zo zdrojového do strojového kódu prebieha je pomerne komplikovaná záležitosť zahŕňajúca veci ako parser, lexikálny analyzér, linker a podobne, to je mimo schopností jedného človeka podrobnejšie vysvetliť čo je čo a ako to funguje, ale už tieto pojmy by ti mali byť vstupným bodom, choď gúgliť a čítať
a ak si sa pýtal ako je možné v štýle linuxu na bežiacom systéme prekompilovať zo zdrojového kódu nové jadro tohto bežiaceho systému, to je tak trochu záhadou aj mne, ale postup bude podobný ako keď sa ti updatuje windows, náhrada jednej sady knižníc za druhú, tie nové sa položia niekam bokom, a systém si zapíše do súboru ktorý načítava pri bootovaní, že "predtým ako načítaš jadro systému, kým sa súbory ktoré jadru patria ešte nepoužívajú, prepíš ich týmito novými súbormi ktoré sú tu bokom". rozdiel pri tomto linuxovom prekompilovaní jadra oproti updatu windows spočíva len v tom že na začiatku je jeden krok navyše, treba zdrojový kód jadra skompilovať do hardvéru použiteľných knižníc.
...nie som si istý či som odpovedal na tvoju otázku, lebo si sa spýtal nie úplne jasne, tak prípadne povedz o čo ti šlo a skúsim odpovedať lepšie.
@midnight myslel som to že keď urobíš nejaký OS úplne od začiatkov aj s jadrom ale nevychádzaš z nijakého iného ako je (linux,unix,BSD,XNU) proste urobíš OS s Jadrom a chceš ho nainštalovať na PC ,,,naprogramoval si ho napr. v C a C++ a potrebuješ ten tvoj OS dostať do PC ako sa to robí zaujíma ma to ako sa ten OS spustí na tom PC ,,,v resp. musí byť na tom PC nejaký prekladač ktorý ten OS s jadrom prekompiluje alebo preloží ...povedz tomu ako chceš...
@kubbox @6 to je veľmi obsiahla a komplikovaná otázka, a zahŕňala by vysvetlenie vecí ako MBR, ovládače, bios, priebeh bootovania, atď atď.
@7 samozrejme že nie, žiadny počítač, bez ohľadu na to či má alebo nemá a aký má operačný systém nie je schopný spúšťať priamo strojový kód, na to aby bol program natívne spustiteľný ho vždy musíš skompilovať, ale to si nerobí počítač, to robí programátor po dopísaní programu, čiže keby si si písal vlastný OS, tak postupuješ zhruba tak, že na inom počítači napíšeš jadro, skompiluješ, prekopíruješ na HDD počítača bez systému, a spustíš daný počítač.
(v praxi to až tak jednoduché nie je, a ani ja nepoznám presnejšie ten proces, ale pre účely základnej predstavy toto vysvetlenie podľa mňa stačí)
Roleta je špeciálny inkognito mód, ktorým skryješ obsah obrazovky pred samým sebou, alebo inou osobou v tvojej izbe (napr. mama). Roletu odroluješ tak, že na ňu klikneš.
9 komentov
neviem čo myslíš tým že "musí mať v sebe kompilátor"...
...ale skompilovať kód môžeš LEN pomocou kompilátoru. nemusí byť vyslovene súčasťou systému, a pokiaľ viem, tak ani nebýva, dokonca ani pri linuxe, máš ho skrátka len ako ďalší program.
a neviem čo myslíš tým "ako"... pýtaš sa čo presne je samotný proces kompilácie, alebo ako prebieha prekompilovanie v prípade linuxu, keď si updatuješ kernel, povedzme?
ale... ako kompilátor zohnali? tak isto ako hocijaký iný program: kúpili/stiahli od niekoho kto ho spravil.
kompilátor nie je ničím špeciálny, je to program ako každý iný, jeho funkciou je v zásade konverzia dát, vezme súbor napísaný v nejakom programovacom jazyku (ZDROJOVÝ kód), a vypľuje súbor v STROJOVOM kóde, čo je v zásade stále len programovací jazyk, až na to že tak nízkolevelový, že mu rozumie priamo hardvér.
predstav si to takto: niekto ti povie "choď do kuchyne", to je zdrojový kód ktorý ti dotyčný človek dostal. tvoj mozog je kompilátor (a tvoje telo procesor), a tvoj mozog tento pre telo nezrozumiteľný a neurčitý pokyn preloží do (veľmi, veľmi dlhej) série nervových impulzov (strojového kódu), ktoré spôsobia striedavé sťahovanie a uvoľnovanie svalov na nohách, ktoré sa prejaví kráčaním, ktoré ťa do kuchyne prepraví.
...ako presne konverzia zo zdrojového do strojového kódu prebieha je pomerne komplikovaná záležitosť zahŕňajúca veci ako parser, lexikálny analyzér, linker a podobne, to je mimo schopností jedného človeka podrobnejšie vysvetliť čo je čo a ako to funguje, ale už tieto pojmy by ti mali byť vstupným bodom, choď gúgliť a čítať
a ak si sa pýtal ako je možné v štýle linuxu na bežiacom systéme prekompilovať zo zdrojového kódu nové jadro tohto bežiaceho systému, to je tak trochu záhadou aj mne, ale postup bude podobný ako keď sa ti updatuje windows, náhrada jednej sady knižníc za druhú, tie nové sa položia niekam bokom, a systém si zapíše do súboru ktorý načítava pri bootovaní, že "predtým ako načítaš jadro systému, kým sa súbory ktoré jadru patria ešte nepoužívajú, prepíš ich týmito novými súbormi ktoré sú tu bokom". rozdiel pri tomto linuxovom prekompilovaní jadra oproti updatu windows spočíva len v tom že na začiatku je jeden krok navyše, treba zdrojový kód jadra skompilovať do hardvéru použiteľných knižníc.
...nie som si istý či som odpovedal na tvoju otázku, lebo si sa spýtal nie úplne jasne, tak prípadne povedz o čo ti šlo a skúsim odpovedať lepšie.
1. ver mi že nechceš
2. tento konkrétny "lenivý fagan" vyzerá že robí trošku pokroky, tak naňho nebuď až taký zlý.
@6 to je veľmi obsiahla a komplikovaná otázka, a zahŕňala by vysvetlenie vecí ako MBR, ovládače, bios, priebeh bootovania, atď atď.
@7 samozrejme že nie, žiadny počítač, bez ohľadu na to či má alebo nemá a aký má operačný systém nie je schopný spúšťať priamo strojový kód, na to aby bol program natívne spustiteľný ho vždy musíš skompilovať, ale to si nerobí počítač, to robí programátor po dopísaní programu, čiže keby si si písal vlastný OS, tak postupuješ zhruba tak, že na inom počítači napíšeš jadro, skompiluješ, prekopíruješ na HDD počítača bez systému, a spustíš daný počítač.
(v praxi to až tak jednoduché nie je, a ani ja nepoznám presnejšie ten proces, ale pre účely základnej predstavy toto vysvetlenie podľa mňa stačí)