Встраивает ли Solaris cc различную информацию в исполняемый файл для разных компиляций? - PullRequest
1 голос
/ 02 ноября 2009

G'day,

Об этом уже спрашивали для VC ++, но мне интересен ответ для Solaris.

Я компилирую и связываю следующий тривиальный код C:

#include <stdio.h>

int main() {
    printf("Hello world!\n");
    return 0;
}

с помощью команды:

cc -o hello1 hello.c

и сделать это пару раз, чтобы получить исполняемые файлы hello2 и hello3. Это делается на одной машине с одним и тем же компилятором и в одном и том же каталоге в разное время.

Размеры исполняемых файлов одинаковы, но diff сообщает, что двоичные файлы различаются, а cmp -l сходит с ума с длинным списком различных мест.

Кто-нибудь знает, что cc встраивает в исполняемые файлы, чтобы они отличались? Timestamps

Редактировать: Удаление исполняемых файлов, как предложил Крис ниже, заставляет diff сообщать о двух исполняемых файлах как идентичных.

ура

Ответы [ 2 ]

2 голосов
/ 03 ноября 2009

Если вы используете «od -c» в двух двоичных файлах, а затем используете программу сравнения «рядом», вы можете понять, в чем различия. В прошлом, когда я исследовал компиляторы Sun, обычно это строка даты. Вы также можете попробовать удалить исполняемый файл, чтобы посмотреть, удаляет ли это раздел ELF, в котором есть разница.

1 голос
/ 06 ноября 2009

Если вы возьмете один и тот же исходный код и дважды скомпилируете его с помощью компилятора Sun, вы не получите два точно двоичных файла-дубликата. Там будут небольшие отличия. Насколько я знаю, это в основном сводится к проблемам даты / времени.

...