![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,378 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 322 раз(а) ![]() |
В общем, в последнее время часто приходится работать с программами на Си / 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++, чем тем что есть пользоваться, но, увы, у меня нет такого дикого количества времени и сил... |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,378 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 322 раз(а) ![]() |
Ничего люди нормально сделать не могут!
Руки у них непонятно откуда! Подключаю к программе сишный файл, ни одной функции ещё оттуда не использую, но они все (ВСЕ!) включаются в выходной .EXE файл! Начал гуглить как можно избавиться от unused functions в GCC - везде предлагают только такой вариант: CFLAGS += -fdata-sections -ffunction-sections LDFLAGS += --gc-sections Пробую - нифига. Потом ещё полазил по Интернету и привет - эти флаги специфичные для платформ и под Windows не пашут. У меня GCC 3.2 - там есть уже упомянутый: -fwritable-strings В новом этот ключ убрали, зато есть какой-то -dead_чего-то-там, который, вроде бы, должен что-то такое делать - нифига не работает. С горя нашёл даже DeadStrip и всё было бы просто замечательно, но он импорт не перестраивает! Т.е. если есть какая-то функция, использующая WinAPI'шные функции, то они будут в импорте выходного файла, хотя НИГДЕ не используются! Итого, в программе, где ничего кроме ExitProcess(0) нет, импорт занимает чуть ли не 99% кода... Кто-нибудь знает как можно в GCC (именно этой версии от DEV-CPP) выкинуть неиспользуемые функции (вместе с импортом)? Сразу оговорюсь, что варианты комментировать функции или вручную включать-отключать их через define'ы - абсолютно неинтересны. Спасибо сказали:
|
![]() ![]() |
Упрощённая версия | Сейчас: 10th July 2025 - 18:48 |