IPB

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

> Нужен нормальный C/C++ компилятор
-=CHE@TER=-
Aug 6 2008, 11:07
Сообщение #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++, чем тем что есть пользоваться, но, увы, у меня нет такого дикого количества времени и сил...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
-=CHE@TER=-
Jan 22 2014, 13:51
Сообщение #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'ы - абсолютно неинтересны.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме


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

 



Упрощённая версия Сейчас: 10th July 2025 - 18:48