IPB

Добро пожаловать, гость ( Вход | Регистрация )

> Нужен нормальный C/C++ компилятор
-=CHE@TER=-
Aug 6 2008, 11:07
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,428
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 327 раз(а)



В общем, в последнее время часто приходится работать с программами на Си / C++.
В связи с этим хотелось бы нормальный компилятор. Сейчас пользуюсь DEV-CPP 4.9.8.0 и MSVC++ 6.0.
Чем меня не устраивают оба этих компилятора - на примере adx2wave с моего сайта.
DEV-CPP всем хорош, но использует msvcrt.dll, что меня несколько напрягает, размер .EXE - 14,336 байт.
MSVC++ 6.0 - при включении опции оптимизации по размеру тоже начинает, гад, использовать msvcrt.dll, если её не включить - всё хорошо, использует только .DLL от ядра системы, но, увы, размером похвастаться не может - 40,960 байт.

Поэтому хотелось бы спросить - существует ли нормальный компилятор (даже, скорее, линкер - т.к. скомпилировать, чтобы ошибок не было, могу и под другим компилятором), который:
а) Не гадит в получаемый исходный файл лишней информацией (как MSVC).
б) Не использует левые библиотеки, кроме .DLL ядра системы (как DEV-CPP).
в) Генерирует небольшие по размеру исполняемые файлы.
г) Ещё, было бы здорово, если бы он был Freeware'ный.
Кто-нибудь знает - такое в природе существует?

P.S. Блин, написал бы уже давно собственный компилятор для Delphi и C++, чем тем что есть пользоваться, но, увы, у меня нет такого дикого количества времени и сил...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
PavelDAS
Mar 24 2026, 13:11
Сообщение #2


Advanced Member
***

Группа: Authorized
Сообщений: 31
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 8 раз(а)



Нужно сделать консольное приложение с простой функцией c=a+b.
Введи a,b. Выведи с. Размер в 2.9Мб совсем не устраивает.




x86


не актуально. Удалил C:\msys64. Запустилось.
Размер где-то 9кб получилось.

Что за мусор в конце не понятно:


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
Mar 24 2026, 16:17
Сообщение #3


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,428
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 327 раз(а)



QUOTE(PavelDAS @ Mar 24 2026, 13:11) *
Нужно сделать консольное приложение с простой функцией c=a+b.
Введи a,b. Выведи с. Размер в 2.9Мб совсем не устраивает.
Я хочу сразу заметить, что "#include <cstdlib>" и/или "#include <iostream>" - это не .C, а .C++. Поэтому и компилировать нужно не через GCC, а через G++ или GPP или как он там называется. Отсюда же и упомянутые мной ключи для компиляции, скорее всего, будут не то чтобы полезны, а очень даже вредны.

QUOTE(PavelDAS @ Mar 24 2026, 13:11) *
не актуально. Удалил C:\msys64. Запустилось.
Размер где-то 9кб получилось.
Я когда-то давно один раз ставил MSys в песочнице и знатно офигел. Если я правильно помню, это не только GCC, а целое окружение в придачу, чтобы "было похоже на Linux, но под Windows". Ставить MSys и ещё отдельно GCC или какие-либо пакеты типа Dev-CPP, где тоже есть GCC - плохая идея, потому что будет конфликт компиляторов (особенно, если они все в %PATH% добавляют свои пути). Нужно выбрать что-то одно, а всё остальное убрать или устанавливать в виртуальной машине, чтобы пакеты между собой никак не пересекались.

QUOTE(PavelDAS @ Mar 24 2026, 13:11) *
Что за мусор в конце не понятно:
О! Совсем забыл про эту фигню. "GCC: (GNU) 15.2.0" - это копирайты компилятора. Их раньше не вставляли, а теперь ими заполняют секции со статическими данными (константы всякие) до границы страницы в 512 байт (размер любой секции в PE должен быть кратен 512 байтам). Как я понимаю тут два пути: либо откатываться на версию компилятора, где такой фигни ещё не было, либо пересобирать и компилировать сам компилятор GCC вручную изменив это поведение (тут, правда, надо лицензию на компилятор проверять, легально ли такое).
Что касается SIGN, PLOSS, UNDERFLOW и прочего - если это C++, то там куча мусора линкуется. Потому что все эти ООП, объекты, классы и прочий мусор не работает без костылей.

Философия "писать на чистом C" подразумевает, что человек понимает что и зачем он пишет и ему не нужен сверхзаботливый компилятор, который будет ему подгузники менять. Да, можно ошибиться и сделать что-то очень неприятное, чего плюсы не дали бы сделать, но иначе красиво и компактно, изящно и элегантно, увы, не получится. Т.е. либо человеку пофиг на мусор и размер файла, либо приходится серьёзно влазить в программирование на чистом C. Ещё можно какой-нибудь компилятор другой попробовать. Типа TinyC или как он там был. Но тут я ничего не посоветую, потому что тот же TinyC пробовал, но он как-то странно компилирует файлы (плюс там какая-то несовместимость была с GCC на тот момент, когда я пробовал), в результате чего получившиеся .EXE файлы почему-то люто ненавидели почти все антивирусы. Если на GCC ворчало всего парочка, то тут прямо целый букет можно было собрать на VirtusTotal с программой "Hello, world!". Повторюсь, было давно, возможно, сейчас уже что-то поменялось в лучшую сторону. А, ещё вроде бы, есть online системы, которые могут код компилировать, но тут нужно искать сайт с долгой и проверенной историей, чтобы вместе с программой, туда какой-нибудь зловредный код не добавили.

VirtualQuery - прозреваю, что-то тоже с C++ связанное. Если напрягают такие и прочие штуки, то предлагаю, во-первых, избавиться от классов, а, во-вторых, гуглить на тему "GCC VirtualQuery reduce file size" или как-то так. И пробовать что там люди предлагают (всякие ключи командной строки и прочее).
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме
-=CHE@TER=-   Нужен нормальный C/C++ компилятор   Aug 6 2008, 11:07
Grom PE   А чем тебе не нравится msvcrt.dll? Она везде есть,...   Aug 7 2008, 00:07
-=CHE@TER=-   Grom PE! Не помогло - всё-равно 40,960 байт......   Aug 7 2008, 11:53
-=CHE@TER=-   Нашёл такую замечатульную вещицу: Tiny C Compiler ...   Jun 22 2012, 20:48
-=CHE@TER=-   Look at this!!! It's awesome!...   Jan 30 2013, 17:22
-=CHE@TER=-   Мне вчера было откровение, которым спешу поделитьс...   Jun 9 2013, 17:03
-=CHE@TER=-   Ничего люди нормально сделать не могут! Руки у...   Jan 22 2014, 13:51
useretail   > именно этой версии от DEV-CPP не понял. можно...   Jan 26 2014, 01:32
-=CHE@TER=-   Welcome back! Что-то давно на форуме видно не ...   Jan 26 2014, 08:06
useretail   Даже не знаю.. наверное из-за уважения. Сам я ра...   Feb 10 2014, 14:42
-=CHE@TER=-   Как вы, наверное, помните, я пишу сишные программы...   Jun 26 2014, 14:00
-=CHE@TER=-   Представьте себе такую программу: #include <s...   Apr 26 2015, 12:01
-=CHE@TER=-   Фига себе, я в эту тему год назад писал. Как быстр...   Mar 8 2016, 09:21
PavelDAS   Что лучшее на сегодняшний день? :) CodeBlocks + G...   Mar 24 2026, 10:29
-=CHE@TER=-   Что лучшее на сегодняшний день? :)Смотря для чего ...   Mar 24 2026, 12:24
PavelDAS   Установил, при первом запуске открылся пример про...   Mar 24 2026, 12:56
PavelDAS   Нужно сделать консольное приложение с простой функ...   Mar 24 2026, 13:11
-=CHE@TER=-   Нужно сделать консольное приложение с простой функ...   Mar 24 2026, 16:17


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 19th April 2026 - 15:32