Нужен нормальный C/C++ компилятор |
Добро пожаловать, гость ( Вход | Регистрация )
Нужен нормальный C/C++ компилятор |
-=CHE@TER=- |
Aug 6 2008, 11:07
Сообщение
#1
|
Walter Sullivan Группа: Root Admin Сообщений: 1,355 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 311 раз(а) |
В общем, в последнее время часто приходится работать с программами на Си / 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=- |
Mar 8 2016, 09:21
Сообщение
#2
|
Walter Sullivan Группа: Root Admin Сообщений: 1,355 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 311 раз(а) |
Фига себе, я в эту тему год назад писал. Как быстро время летит...
Итак, ещё один косяк GCC. Если вы делаете .DLL и у вас нет импортируемых функций (т.е., например, ваша библиотека не вызывает ни одну функцию Windows), то GCC всё равно создаёт файл с секцией импорта в 256 байт (.idata) которая состоит из одних нулей, плюс в хвосте секции кода (.text) у вас будет 16+байт выравнивание на 32 байтную границу (почему не просто на 16???), а затем ещё 16 байт из четырёх DWORD: -1, 0, -1, 0 - это конец таблицы для указателей на функции импорта. Но, т.к. импорта нет, то и этого маркера не должно быть, однако ж, GCC такой GCC... |
Упрощённая версия | Сейчас: 27th April 2024 - 14:26 |