Те же источники, но скомпилированные бинарные разные - PullRequest
0 голосов
/ 10 марта 2011

Привет, я разрабатываю C / C ++ для VxWorks на WinXP, используя компилятор ccarm.И я хотел бы добавить исправление для выпущенной поставки, которая была создана давно.Источники хранятся в Clear Case, и каждая поставка помечена.Таким образом, можно получить доступ к исходным кодам определенной доставки.

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

Вот проблема;Я получаю исходники с сервера CC и собираю их.Затем я сравниваю выходной файл с соответствующим выходным выпуском (выходной файл имеет тип * .lad file + формат файла elf32-littlearm).И разница огромна (не некоторые временные метки). С другой стороны, я также сравниваю списки сборок, и они тоже разные.

У вас есть идеи, что может вызвать такую ​​разницу?По моему мнению, список элементов, которые могут вызвать такую ​​разницу - Выпущенный вывод был собран на другом ПК (снова WinXP) со скриптом автоматической сборки. Новый вывод построен на моем локальном компьютере с тем же компилятором и настройками.-Получил неправильный ярлык из хранилища

что-нибудь добавить?

заранее спасибо

Ответы [ 2 ]

2 голосов
/ 12 марта 2011

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

Сравнивая эти два, вы, возможно, сможете найти причину различий.

Если вы никогда ранее не использовали readelf или objdump, вы можете найти множество статей и документации в Интернете.

Но если вы используете одну и ту же метку с той же цепочкой инструментов (и такими же опциями)нет причин для различий в результатах.

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

Привет. Мой поиск по сети показывает, что двоичная воспроизводимость связана с проблемой инкрементной сборки.

Если ваша система сборки настроена как неинкрементная, все построено с нуля.При такой конфигурации даже две последовательные сборки дают огромные различия в выводимых изображениях и списках asm.(Я использую objdump -d для получения списка asm)

Но если используется инкрементная сборка, хотя выходное изображение все еще имеет огромные различия, список asm имеет только 1-2 строки.

Моя стратегиябудет рассчитывать на CM инструмент и метки.Но я проверю readelf заранее.Спасибо

...