Я переписываю сборку, которая производит несколько вещей (разделяемые / статические библиотеки, файлы jar, исполняемые файлы и т. Д.).Возник вопрос, есть ли способ проверить, что результаты являются функционально эквивалентными, не выполняя полный тест сверху вниз получающегося программного обеспечения.
Однако это оказывается более трудным, чем яОжидается.
В качестве примера я ожидал, что md5 двух объектов, созданных из одного источника (компилятор sun studio C ++) и параметры командной строки, будут иметь одинаковый хэш md5, но это не так,Я могу собрать файл, переименовать его, собрать снова, и они имеют разные хэши.
С учетом сказанного ... есть ли способ сделать быструю проверку, чтобы убедиться, что два файла созданы из отдельных архитектур компоновкиодно и то же дерево исходных текстов (например, два общих объекта) функционально эквивалентны?
edit Извините, я не упомянул, что это для отладочной сборки ... когда флаги отладки неиспользуемые двоичные файлы идентичны, но они используют флаги отладки по умолчанию в течение многих лет, и их содержимое перестает работать, когда вы удаляете флаги отладки (одна из причин, по которой я переписываю сборку, состоит в том, чтобы воспользоваться этой конкретной «функцией»)вне сборки, чтобы мы могли провести правильное тестирование)