Двоичная воспроизводимость в Visual C++

Это очень легко с фс

var fs = require('fs');
try{
 var sourceUrls = "/sampleFolder/sampleFile.txt";
 fs.unlinkSync(sourceUrls);
}catch(err){
 console.log(err);
}
6
задан Jeffrey Hantin 22 September 2011 в 21:32
поделиться

2 ответа

Я полагаю, вы могли бы написать утилиту для открытия PE, установить контрольную сумму на 0, установить временную метку, которая вам нравится, пересчитать crc, а затем записать ее обратно. Хотя было бы неплохо, если бы существовал официальный способ гарантировать идеальную двоичную воспроизводимость.

Для получения дополнительной информации: http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

3
ответ дан 11 December 2019 в 00:41
поделиться

Это не только временная метка - для сопоставления PDB используется встроенный GUID, как объясняет Джон Роббинс .

Даже помимо этого, просто невозможно заставить компилятор генерировать согласованные результаты, как объясняет Джим Грисмер -

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

Таким образом, Функция и порядок секций не гарантированно упорядочены в результирующем PE. Пример по ссылке.

4
ответ дан 11 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

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