Проблемы с Code :: Blocks builds - PullRequest
       20

Проблемы с Code :: Blocks builds

0 голосов
/ 28 февраля 2012

Я использую Code :: Blocks для разработки приложения на C в Windows. Когда я создаю приложение, оно собирается и работает, как и ожидалось. Когда мой коллега собирает приложение, оно строит, но не работает правильно при запуске. Созданные exe-файлы также имеют разные размеры. Проект Code :: Blocks хранится в Subversion и, насколько мы можем сказать, одинаков для нас обоих.

Кто-нибудь может подсказать, что может быть причиной различий?

1 Ответ

1 голос
/ 29 февраля 2012

Подводя итог:

  • идентичный файл проекта и источники, извлеченные из SVN
  • идентичные библиотеки , насколько вы можете сказать
  • предположительно один и тот же компилятор
  • исполняемые файлы разного размера
  • другое поведение программы

Другой компилятор, даже другая версия, может объяснить разные размерыпрограммы, но не другое поведение, если нет серьезной ошибки компилятора, что крайне маловероятно.Однако вы можете попросить компилятор проверить его версию на 100% (если вы используете компилятор GNU, попробуйте, например, gcc --version)

Различные версии статических библиотек могут аналогичным образом объяснить по-разномуразмеры программы, но должны обычно не приводить к некорректному поведению.Чтобы превратить «насколько я могу судить» в достоверность, вы и ваш коллега должны либо выполнить чистую установку этих библиотек (из одной и той же согласованной версии), либо сравнить контрольные суммы (например, * 1028).*).

Если вы можете безопасно исключить возможность вредоносного ПО на компьютере вашего коллеги (это может очень хорошо объяснить оба симптома!), Вероятная причина сочетания «программы разного размера и разного / неправильного поведения»"у одного из вас включены некоторые опции оптимизации или скомпилирован другой стандарт языка, и в то же время , источник содержит код, который не разрешен стандартом (но допустим, возможно, с предупреждением)или вызывает неопределенное поведение.

Всегда компилируйте по крайней мере с -Wall -Wtraditional и исправляйте все, на что жалуется компилятор, даже если вы думаете, что это глупо.Всегда.Это предотвращает 99% всех ошибок типа "странно иногда".Действительно, предупреждения компилятора не раздражают, они помогают.

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

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

...