Zunächst möchte ich für den Datensatz angeben, dass diese Frage zu Schule/Hausaufgaben betrifft.C-Objekt-Datei-Kompatibilität zwischen Computern
Computer sagen Lassen CP1 und CP2 beide das gleiche Betriebssystem und Maschinensprache teilen. Wenn ein C-Programm auf CP1 kompiliert wird, um es in CP2 zu verschieben, ist es notwendig, den Quellcode zu übertragen und auf CP2 neu zu kompilieren oder einfach die Objektdateien zu übertragen.
Meine gute Antwort ist, dass die Objektdateien ausreichen sollten. Der C-Code wird vom Compiler in Assembler übersetzt und vom Assembler zu Maschinencode zusammengesetzt. Da die Architektur denselben Maschinencode und dasselbe Betriebssystem verwendet, sehe ich kein Problem.
Aber je mehr ich darüber nachdenke, desto verwirrter werde ich.
Meine Fragen sind:
a) Seit seiner Dateien und nicht ausführbare Dateien auf Objekt Bezug genommen wird, ich es gehe mal davon keine Verknüpfung war. Gibt es Probleme, die beim Verbinden auf CP2 auftreten?
b) Wäre es egal, ob der Code C11-Standard auf CP1 verwendet, aber der einzige Compiler auf CP2 war C99? Ich gehe davon aus, dass dies irrelevant ist, sobald der Code kompiliert/zusammengestellt wurde.
c) Die Frage spezifiziert keine gemeinsam genutzten/dynamisch verbundenen Bibliotheken. Das würde also nur funktionieren, wenn das Programm keine Abhängigkeiten zu .dll/.so/.dylib Dateien hätte, sonst wären diese auch auf CP2 erforderlich.
Ich fühle mich wie es so viele Fallstricke sind, und überlegen, wie vage die Frage, die ich jetzt das Gefühl, dass es sicherer wäre, einfach neu kompilieren.
Halp!
distcc, das Objektdateien zwischen Computern kopiert, empfiehlt die Verwendung der gleichen Version des Compilers auf allen Knoten, auch für die Sprache C. – aschepler