Что может вызвать небольшую разницу в двоичных файлах при компиляции в разное время с использованием make? - PullRequest
0 голосов
/ 07 марта 2011

Я скомпилировал свой код с помощью утилиты make и получил двоичные файлы.

Я снова скомпилировал код с несколькими изменениями в make-файле (-j вставлен в некоторых точках) и получил небольшую разницу в двоичных файлах. Разница была сообщена «вне всякого сравнения». Для дальнейшей регистрации я снова скомпилировал код без изменений в make-файле и обнаружил, что двоичные файлы все еще различаются.

Почему так происходит, что один и тот же код, скомпилированный в разное время, приводит к несколько отличным (по размеру и содержанию) двоичным файлам? Как следует проверить, являются ли внесенные мной изменения правомерными, а двоичные файлы логически одинаковыми?

Спросите у меня дальнейшие объяснения.

Ответы [ 2 ]

1 голос
/ 07 марта 2011

Вы не сказали, что строите (C, C ++ и т. Д.), Но я не удивлюсь, если это временная метка.

Вы можете узнать формат для двоичного типа, который вы используете.сборку (которая будет зависеть от вашей операционной системы) и посмотрите, имеет ли смысл иметь временную метку в месте, которое меняется.

Вероятно, это проще всего сделать на крошечной программе-примере, которая выдасточень маленький двоичный файл, чтобы было легче понять, что все означает.

0 голосов
/ 07 марта 2011

ELF объектные файлы содержат метку времени, когда они скомпилированы.Таким образом, вы можете ожидать разные объектные файлы при каждой компиляции (в Linux или Solaris).То же самое можно найти и в других системах объектных файлов.

...