Per prima cosa desidero dichiarare per la cronaca che questa domanda è correlata a scuola/compiti a casa.Compatibilità file di oggetti C tra computer
Supponiamo che i computer CP1 e CP2 condividano lo stesso sistema operativo e il medesimo linguaggio macchina. Se un CP è compilato su CP1, per spostarlo su CP2, è necessario trasferire il codice sorgente e ricompilare su CP2, o semplicemente trasferire i file oggetto.
La mia risposta istintiva è che i file oggetto dovrebbero essere sufficienti. Il codice C è tradotto in assembly dal compilatore e assemblato in codice macchina dall'assemblatore. Poiché l'architettura condivide lo stesso codice macchina e il medesimo sistema operativo, non vedo alcun problema.
Ma più ci penso, più confuso sto iniziando a ottenere.
Le mie domande sono:
a) Fin dal suo riferimento al file oggetto e non eseguibili, sto assumendo non c'è stato alcun collegamento. Ci sarebbero problemi di superficie durante il collegamento su CP2?
b) Sarebbe importante se il codice utilizzato C11 standard su CP1, ma l'unico compilatore su CP2 era C99? Presumo che ciò sia irrilevante una volta che il codice è stato compilato/assemblato.
c) La domanda non specifica le librerie collegate condivise/dinamiche. Quindi questo funzionerebbe davvero solo se il programma non avesse dipendenze da file .dll/.so/.dylib, altrimenti questi sarebbero richiesti anche su CP2.
Mi sento come se ci fossero così tanti trucchi e, considerando quanto sia vaga la domanda, ora sento che sarebbe più semplice ricompilare semplicemente.
Halp!
distcc, che copia i file oggetto tra computer, consiglia di utilizzare la stessa versione del compilatore su tutti i nodi, anche per il linguaggio C. – aschepler