Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Размер простенькой программы


Автор: DKroshkin 2.11.2007, 17:59
Коллеги, не подскажете как можно уменьшить размер исполняемого файла простенькой такой программки.

Код

#include <iostream>
using namespace  std;

int main() {
    cout << "Hello" << endl;
    return 1;
}

Для винды компилю с помощью MinGW - программа занимает около 500Кб.
Если компилить g++ в Cygwin - программа также занимает около 500Кб.

Можно ли как то соптимизировать процесс компиляции и сборки в плане размера исп. файла?

Спасибо.

Автор: a_n_d_y 2.11.2007, 18:12
кроме как переписать на С ничего в голову не приходит...

Автор: powerfox 2.11.2007, 18:22
DKroshkin, можно с помощью утилиты strip.

Добавлено через 5 минут и 33 секунды
DKroshkin, кстати, ещё можно поиграться с опциями компилятора:
Цитата

g++ -fno-enforce-eh-specs -fno-threadsafe-statics -Os

Ещё можно определить NDEBUG.

Автор: DKroshkin 2.11.2007, 19:32
NDEBUG мало чем помог, а вот опция компилятора -s сократила размер программы в два раза.

Спасибо за подсказанное направление. Буду смотреть на опции компилятора.

Автор: MAKCim 2.11.2007, 22:50
имхо, просто статически линкуется libstdc++
динамическая компоновка в разы сократит размер исполняемого файла

Автор: powerfox 2.11.2007, 23:11
Цитата(DKroshkin @  2.11.2007,  20:32 Найти цитируемый пост)
Спасибо за подсказанное направление. Буду смотреть на опции компилятора.

Выполнение strip тоже уменьшае размер. И, как сказал уже MAKCim, используйте динамическую компановку. 

Автор: archimed7592 3.11.2007, 10:38
Цитата(MAKCim @  2.11.2007,  22:50 Найти цитируемый пост)
динамическая компоновка в разы сократит размер исполняемого файла 

AFAIK, поддержка динамической стандартной библиотеки появилась только в gcc-4.1.2(который сейчас не стабилен - technology preview).

Автор: maxim1000 3.11.2007, 11:53
можно вообще отказаться от стандартной библиотеки и использовать WinAPI smile

Автор: MAKCim 3.11.2007, 14:22
archimed7592, 
Цитата(archimed7592 @  3.11.2007,  10:38 Найти цитируемый пост)
AFAIK, поддержка динамической стандартной библиотеки появилась только в gcc-4.1.2(который сейчас не стабилен - technology preview). 

я имею в виду libstdc++
а что ты?
не понял фразы "поддержка динамической стандартной библиотеки"
libstdc++.so и есть динамическая библиотека
и была до 4.1.2

Автор: archimed7592 4.11.2007, 12:30
Цитата(MAKCim @  3.11.2007,  14:22 Найти цитируемый пост)
не понял фразы "поддержка динамической стандартной библиотеки"

Ну что тут непонятного smile. Нет её просто.

Цитата(MAKCim @  3.11.2007,  14:22 Найти цитируемый пост)
libstdc++.so и есть динамическая библиотека
и была до 4.1.2

Цитата(DKroshkin @  2.11.2007,  17:59 Найти цитируемый пост)
Для винды компилю с помощью MinGW

И что, под винду(mingw) есть такая? smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)