Kompilierungsdatum abrufen

Kompilierungsdatum abrufen

Ich versuche, das Kompilierungsdatum aus einem Linux-Befehl zu extrahieren (oder CPP wäre auch in Ordnung). Ich verwende:

stat -c %z ./myProgram.bin

Wenn ich jedoch beispielsweise per SSH an einen anderen Ort kopiere myProgram.bin, gibt mir der Stat-Befehl im Grunde das Datum der Kopie an.

Wie kann ich das tatsächliche Kompilierungsdatum erhalten? Danke.

Antwort1

Thomas Dickeys Antwortbehandelt das Problem im Allgemeinen für alle (ELF-)Binärdateien. Angesichts der Formulierung Ihrer Frage finden Sie möglicherweise die__DATE__und __TIME__vordefinierte Makrosnützlich; sie ermöglichen die Bezugnahme auf Datum und Uhrzeit der Kompilierung innerhalb eines Programms (so dass ein Programm sein eigenes Datum und seine eigene Uhrzeit der Kompilierung kennt).

Hier ist ein kurzes Beispiel:

#include <stdio.h>

int main(int argc, char **argv) {
    printf("This program was compiled on %s at %s.\n", __DATE__, __TIME__);
    return 0;
}

Antwort2

stat -c %zzeigt die letzte Erstellungs-/Aktualisierungszeit der Datei an und kann nicht geändert oder beibehalten werden. Wenn Sie die Datei also an einen anderen Ort kopieren, wird sie immer eine neue Erstellungszeit erhalten. Sie suchen nach einer stat -c %yAnzeige der letzten Änderungszeit, die normalerweise von den meisten Tools, die mit Dateien und Verzeichnissen arbeiten, beibehalten wird.

Antwort3

Sie können unter Beibehaltung des Änderungszeitpunkts kopieren, z. B.

cp --preserve=timestamps source destination

oder (allgemeiner:Modus,EigentumUndZeitstempel)

cp -p source destination

obwohl in einigen Fällen die ErhaltungEigentumist nicht erwünscht.

Auf ähnliche Weise können Sie mit -pder Option von scp auf Remote-Systeme kopieren:

scp -p source remote:destination

aber scpkeine separaten Optionen für den Modus usw. Da es mit dem angegebenen läuftFernbedienungBerechtigungen, es gibt jedoch keine Funktion zum gleichzeitigen Festlegen des Remote-Eigentums. Aufgrund dieser Einschränkungen möchten Sie möglicherweise tarein Archiv erstellen, das Sie auf dem Remote-System extrahieren und dabei so viele Informationen wie möglich erhalten.

Das für Binärdateien verwendete ELF-Format enthält kein Datum, daher können Sie nur den Änderungszeitstempel der Datei beibehalten.

Weiterführende Literatur:

verwandte Informationen