Получить дату компиляции [дубликат]

-1
19.05.2016, 15:09
3 ответа

Ответ Томаса Дики решает проблему в целом для любого (ELF) двоичного файла. Учитывая формулировку вашего вопроса, вы можете найти предопределенные макросы __ DATE __ и __ TIME __ полезными; они позволяют ссылаться на дату и время компиляции внутри программы (чтобы программа знала свои собственные дату и время компиляции).

Вот краткий пример:

#include <stdio.h>

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

stat -c% z отображает время последнего создания / обновления файла, его нельзя изменить или сохранить. Следовательно, если вы скопируете файл в другое место, он всегда будет получать новое время создания сейчас. Вы ищете stat -c% y , чтобы отобразить время последней модификации, которое обычно сохраняется большинством инструментов, работающих с файлами и каталогами.

0
28.01.2020, 05:13

Вы можете скопировать с сохранением времени изменения, например,

cp --preserve=timestamps source destination

или (в более общем смысле: режим , владение ] и отметки времени )

cp -p source destination

, хотя в некоторых случаях сохранение права собственности не требуется.

Точно так же вы можете копировать в удаленные системы, используя параметр scp -p :

scp -p source remote:destination

, но scp не имеет отдельных параметров для режима и т. Д. Поскольку он работает с с учетом удаленных разрешений у него нет функции одновременной установки удаленного владения. Из-за этих ограничений вы можете использовать tar для создания архива, который вы распаковываете в удаленной системе, сохраняя как можно больше информации.

Формат ELF, используемый для двоичных файлов, не включает дату, поэтому метка времени изменения файла - это все, что вы можете сохранить.

Дополнительная литература:

0
28.01.2020, 05:13

Теги

Похожие вопросы