sul processo di compilazione

0

Ho programmato in Obj C e C, ma fino ad ora ho scoperto che non comprendo appieno i passi necessari per portare il software dal codice sorgente all'eseguibile, Ho trovato questa immagine tipo di che lo spiega (non è stato possibile caricare il caricamento poiché sono nuovo

ma non riesco ancora a ottenere quando il debugger, make, builder entra in azione, quando passa a asm e quando a binary

  • sono i passi uguali per OOP di per procedurali?
  • che ne pensi delle diverse lingue? python, php, objc, C, stessi passi?

Grazie mille!

    
posta MaKo 26.03.2011 - 16:33
fonte

1 risposta

1
  • Il debugger non fa nulla prima del runtime. Bene, devi istruire il compilatore affinché includa informazioni per i debugger nell'output se vuoi che il debugger sia più utile, ma tali opzioni modificano semplicemente i dettagli del passo "compile".
  • make è solo uno strumento per automatizzare la build, cioè specificare tutti quei passaggi (e potenzialmente di più, ad esempio eseguire test e installare il programma compilato) in un file una volta e poi eliminarli a richiesta con un singolo comando.
  • Che cosa intendi per "costruttore"?
  • Sì, questo modello funziona per le lingue tutte . Molte implementazioni linguistiche funzionano in modo diverso, inclusa la maggior parte dei più popolari linguaggi OOP moderni, ma questa è un'altra questione. Puoi sicuramente implementarli con la compilazione in anticipo.
  • C'è una differenza tra le lingue e le implementazioni linguistiche! L'implementazione principale di Python e PHP sono più o meno interpreti - in senso stretto, entrambi compilano il bytecode che poi viene eseguito in una macchina virtuale, ma quella compilazione avviene immediatamente prima dell'esecuzione e implicitamente, e PHP non si cura nemmeno di salvare quel bytecode per la prossima esecuzione a meno che non si utilizzi una cache bytecode. ObjC e C sono generalmente lingue compilate, cioè simili. Una terza categoria, tra cui ad es. Java e C #, compaiono in bytecode "in anticipo" (simile al modo in cui il codice C ++ viene compilato per i file oggetto, solo l'output è di livello superiore e indipendente dalla macchina) e questo bytecode viene compilato in codice macchina "just in time" (JIT), cioè durante l'esecuzione.
risposta data 26.03.2011 - 16:49
fonte

Leggi altre domande sui tag