Gå til innhold

windows og linux executables


Anbefalte innlegg

Hva er egentlig forsjellen mellom et windows program og et linux program, bortsett fra API'en?

 

Kan jeg kjøre f.eks C++ kode kompilert under Linux på windows og vise versa? Er det ikke bare maskinkode?

 

Og hvis de kompileres forsjellig, hvordan kompileres da operativsystemer?

 

ser at dette kansje er litt off-topic, men anntar at dette er det beste stedet å poste det, siden dette forumet er det eneste som behandler alternative os (og det handler jo uansett om bla. Linux), og da mange av brukerene i dette forumet er svært kunnskapsrike.

Lenke til kommentar
Videoannonse
Annonse
Hva er egentlig forsjellen mellom et windows program og et linux program, bortsett fra API'en?

Kan jeg kjøre f.eks C++ kode kompilert under Linux på windows og vise versa? Er det ikke bare maskinkode?

Og hvis de kompileres forsjellig, hvordan kompileres da operativsystemer?

Linux og Windows har en helt forskjellig måte å "sette sammen" (også kalt linke) programfiler på. Dette vil kort og godt si at dersom man kompilerer et program på Linux vil det ikke fungere på Windows. Når det er sagt er feks C/C++ et standardisert språk og dersom man skriver et program som ikke bruker biblotek som bare fungerer på det en av plattformene kan man kompilere programmet på Linux og Windows uten å gjøre (store) endringer i koden. - men man må kompilere programmene på hver sin plattform.

C/C++/Fortran/Lisp/Ada/Cobol/Pacal/Simula/etc.. er språk som kompilerer mot det spesifikke hardwaren og OSet man jobber på. Java/Python er eksempler på språk som kompilerer til såkalt bytekode. Slik kode kan kjøres på alle mulige plattformer (hvor Java/Python er støttet) uten at det blir rekompilert.

Operativsystemene blir kompilert med bruk av såkaldte lavnivåspråk, dvs Assembler og C. Det finnes mye info på nettet og bøker om operativsystem og hvordan de er bygd opp hvis man vil "hoppe" skikkelig inn i teorien.

Alt som "kjøres" på maskinen er i bunn og grunn bare 0ere og 1ere uansett hvordan OS man bruker og hvilket språk man skriver programmer i. Den store forskjellen er hvordan man organiserer alle 0ene og 1erene :)

Lenke til kommentar

Java/Python er eksempler på språk som kompilerer til såkalt bytekode. Slik kode kan kjøres på alle mulige plattformer (hvor Java/Python er støttet) uten at det blir rekompilert.

Python er da et scripting språk på lik linje med perl.

Lenke til kommentar
Python er da et scripting språk på lik linje med perl.

Det er riktig at det er intepreterende språk, dvs den kompilerer koden samtidig som den eksekverer koden. Det Python gjør er at den også lager noen .pyc filer etter at den har kjørt en .py fil. Dette er "kjørte" Python filer som er "kompilerte" til Python bytekode. Når man kjører en .py fil sjekker Python om det finnes en tilsvarende .pyc fil som er "yngre" enn .py fila. Hvis den er det kjører den .pyc fila, ellers bruker den .py fila og kompilerer på nytt. Dette for å slippe å kompilere det samme programmet om igjen uten at noen endringer er gjort. Disse .pyc filene kan kjøres på forskjellige operativsystemer uten rekompilering.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...