gcc и размер кода
От: maks1180  
Дата: 28.12.21 04:29
Оценка: -1
Компилирую тулзу для Windows из одних исходников на VS6.0 и gcc v10.2. Размер имеет существенное значение.
Получился на gcc 305152 против 172032 на VS.
gcc компилировал с оциями
-m32 -march=i586
-Os // 36kb less than -O2
-Wl,--strip-all // 264kb less
-flto // 57kb less by this option
-fno-asynchronous-unwind-tables // не менЯет размер файла
-g0 // не менЯет размер файла
-s // не менЯет размер файла
и линковал ещё дополнительные опции: -static -lstdc++ -lws2_32 -lsecur32 -liphlpapi -lGdi32 -mwindows

1) В чём может причина почему код gcc на 77% больше ?
2) Может есть ещё какие-то опции, что-бы уменьшить бинарник ?
3) exe от gcc ещё тящит за собой MSVCRT.DLL, а exe от VS6.0 ничего не тащит!
===============================================
(реклама, удалена модератором)
Отредактировано 28.12.2021 4:35 maks1180 . Предыдущая версия .
Re: gcc и размер кода
От: flаt  
Дата: 28.12.21 10:23
Оценка:
Зачем GCC под Windows, если у вас уже есть наивный VC?
Re: gcc и размер кода
От: RonWilson Россия  
Дата: 28.12.21 10:25
Оценка:
Здравствуйте, maks1180, Вы писали:

M>3) exe от gcc ещё тящит за собой MSVCRT.DLL, а exe от VS6.0 ничего не тащит!


Насколько помню, рантайм от VS6 уже в системных либах Windows то ли с 2000, то ли с XP. Зависимость у exe явно есть, погляди результат через depend.exe
Re[2]: gcc и размер кода
От: σ  
Дата: 28.12.21 10:30
Оценка:
F>Зачем GCC под Windows, если у вас уже есть наивный VC?
Чтобы на C++, а не MSVC++ писать.
Re[3]: gcc и размер кода
От: flаt  
Дата: 28.12.21 10:37
Оценка:
Здравствуйте, σ, Вы писали:

F>>Зачем GCC под Windows, если у вас уже есть наивный VC?

σ>Чтобы на C++, а не MSVC++ писать.

У него всё равно компиляция в VS. Если бы стоял вопрос перехода или кроссплатформенности, он бы был упомянут. А так — непонятен юзкейс.
Re: gcc и размер кода
От: Zhendos  
Дата: 28.12.21 10:57
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Компилирую тулзу для Windows из одних исходников на VS6.0 и gcc v10.2. Размер имеет существенное значение.

M>Получился на gcc 305152 против 172032 на VS.
M>gcc компилировал с оциями
M>-m32 -march=i586
M> -Os // 36kb less than -O2
M> -Wl,--strip-all // 264kb less
M> -flto // 57kb less by this option
M> -fno-asynchronous-unwind-tables // не менЯет размер файла
M> -g0 // не менЯет размер файла
M> -s // не менЯет размер файла
M>и линковал ещё дополнительные опции: -static -lstdc++ -lws2_32 -lsecur32 -liphlpapi -lGdi32 -mwindows

M>1) В чём может причина почему код gcc на 77% больше ?


Еще обычно используют "-ffunction-sections -fdata-sections" и "-Wl,--gc-sections"
чтобы избавиться от неиспользуемого кода, не знаю насколько эта функциональность пересекается
с LTO.
Re[2]: gcc и размер кода
От: fk0 Россия https://fk0.name
Дата: 06.01.22 19:19
Оценка:
Здравствуйте, Zhendos, Вы писали:

M>>и линковал ещё дополнительные опции: -static -lstdc++ -lws2_32 -lsecur32 -liphlpapi -lGdi32 -mwindows

M>>1) В чём может причина почему код gcc на 77% больше ?

Z>Еще обычно используют "-ffunction-sections -fdata-sections" и "-Wl,--gc-sections"

Z>чтобы избавиться от неиспользуемого кода, не знаю насколько эта функциональность пересекается
Z>с LTO.

A -static никого не смущает?
Re[3]: gcc и размер кода
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 07.01.22 15:12
Оценка:
Здравствуйте, fk0, Вы писали:

fk0> A -static никого не смущает?


А должно?
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.