Вопрос о размере после компиляции

У меня есть набор файлов. Скомпилировано с gcc49 под FreeBSD. Makefile по умолчанию, созданный мной. Ну, это не проблема.

Хорошо, я решил скомпилировать с CMake.

  • При компиляции со стандартными make-файлами (gcc49) целевой размер вывода составляет: 5 МБ
  • При компиляции с помощью cmake(gcc49, те же флаги, что и в файле по умолчанию для make-файла), выходная цель: 12 МБ

Мой вопрос, почему такие большие различия в размерах.

Я хочу, чтобы файл заканчивался, чтобы был как маленький размер, это было нормально 5 МБ.

Что я должен сделать, чтобы сделать мой файл 5 МБ (с помощью cmake)

THX все

2 ответа

Решение

В обоих случаях вы вызываете компилятор с разными параметрами.

CMake уже устанавливает кучу опций компилятора и компоновщика, которые лучше всего подходят для вашего проекта. К сожалению, если вы новичок в CMake, не всегда очевидно, почему устанавливается конкретный параметр и как идиоматически его менять.

Для генератора Makefile, чтобы узнать, какие параметры CMake передает компилятору, вы можете установить VERBOSE переменная окружения при вызове make на оболочке:

$ VERBOSE=1 make

Сравните команды, используемые CMake, с командами, которые вы используете при сборке вручную. После того, как вы определили виновника, проведите дальнейшие исследования о том, как лучше всего изменить этот конкретный вариант сборки с помощью CMake.

CMake создает конфигурацию отладки по умолчанию. Если вы не переключились на выпуск, двоичные файлы будут собраны как отладочные, что приведет к увеличению размера.

Вы можете протестировать снова релиз, например:

cd release_dir
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Другие вопросы по тегам