Добро пожаловать, гость ( Вход | Регистрация )
| -=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++, чем тем что есть пользоваться, но, увы, у меня нет такого дикого количества времени и сил... |
![]() ![]() |
| 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кб получилось. Что за мусор в конце не понятно: ![]() -------------------- |__--__|
***|*** ___|___ |
| -=CHE@TER=- |
Mar 24 2026, 16:17
Сообщение
#3
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,428 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 327 раз(а) |
Нужно сделать консольное приложение с простой функцией c=a+b. Я хочу сразу заметить, что "#include <cstdlib>" и/или "#include <iostream>" - это не .C, а .C++. Поэтому и компилировать нужно не через GCC, а через G++ или GPP или как он там называется. Отсюда же и упомянутые мной ключи для компиляции, скорее всего, будут не то чтобы полезны, а очень даже вредны.Введи a,b. Выведи с. Размер в 2.9Мб совсем не устраивает. не актуально. Удалил C:\msys64. Запустилось. Я когда-то давно один раз ставил MSys в песочнице и знатно офигел. Если я правильно помню, это не только GCC, а целое окружение в придачу, чтобы "было похоже на Linux, но под Windows". Ставить MSys и ещё отдельно GCC или какие-либо пакеты типа Dev-CPP, где тоже есть GCC - плохая идея, потому что будет конфликт компиляторов (особенно, если они все в %PATH% добавляют свои пути). Нужно выбрать что-то одно, а всё остальное убрать или устанавливать в виртуальной машине, чтобы пакеты между собой никак не пересекались.Размер где-то 9кб получилось. Что за мусор в конце не понятно: О! Совсем забыл про эту фигню. "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" или как-то так. И пробовать что там люди предлагают (всякие ключи командной строки и прочее). |
-=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![]() ![]() |
| Упрощённая версия | Сейчас: 19th April 2026 - 15:32 |