2016-05-08 2 views
0

Im using Mingw-компилятор в среде Windows. Когда я компилирую программу приветствия с iostream с этими флагами: g++ hello.cpp -static -s выход составляет 967 кб. Когда я использую g++ hello.cpp -s, выход составляет 16 кб, но при этом на других компьютерах отсутствует ошибка libgcc_s_dw2-1.dll. Как я могу построить его с допустимым размером файла?C++ -статический флаг делает исполняемый файл слишком большим

+1

Скорее всего вы обнаружите, что фактическая библиотека 'libgcc_s_dw2-1.dll' будет иметь гораздо больший размер, чем ваши двоичные файлы. Таким образом, распространение исполняемого файла вместе с разделяемой библиотекой будет фактически увеличивать общий размер. Это за исключением того, что у вас есть большое количество потоков, использующих общие библиотеки для конкретной системы. Также почему 967kb неприемлем? то есть менее 1 мб ??? конечно, с сегодняшней уткой, которая представляет собой тривиальное количество памяти? – silvergasp

+1

Из [документации] (https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Link-Options.html#Link-Options) GCC ключевое слово '-статический' предотвращает связывание с общим библиотеки. Это означает, что библиотека будет статически связана (библиотеки станут частью вашей программы), и ваша программа приведет к увеличению размера. –

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^