Компилятор под винду с минимальным размером exe
а как там lcc поживает?
program Project1;
{$APPTYPE CONSOLE}
begin
{ TODO -oUser -cConsole Main : Insert code here }
Writeln('Hello, world!');
Readln
end.
project1.exe 15360 байт
Borland Delphi 7 Enterprise
зависимости от
kernel32.dll
user32.dll
advapi32.dll
asm за компилятор считается? =)
Во-вторых, наличие стандартной библиотеки нужно? Ну, если я вместо printf буду апишку вызывать, то прога влезет в килобайт, если мне не изменяет память.
Правда там отрубали все что можно и кроме MessageBox он ничего делать не мог.
#include<windows.h>
int main
{
HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
char s[] = "Hello, World!";
WriteFile(stdout, s, sizeof(s 0, 0);
}
В ровно два килобайта. Причём они состоят из нулей всего чуть менее, чем всё, типа линкер почему-то считает, что сегменты обязательно красиво алайнить. Ну, если ты хочешь что-нибудь сложнее хелловорлда, то, наверное, подобное поведение тебя не очень сильно расстроит!
Собственно, никакой особой магеи не было, отключил все стандартные библиотеки, после чего аккуратно прошёлся по опциям компайлера/линкера отрубая всё лишнее, типа генерации манифеста (он, сцука, зачем-то в конец экзешника тоже какой-то кусок XML дописывает дебаг инфы етс., периодически рекомпиля и заглядывая в файл.

Для 1..4k интро вовсю юзают crinkler (compressing linker)
чтобы .exe не зависел от внешних библиотек, отличных от стандартных виндовыхПод "стандартными виндовыми" что имеется в виду?
Требуется, чтобы .exe не зависел от внешних библиотек, отличных от стандартных виндовых.Да, кстати. Если не будет зависимости от kernel32.dll, то такой PE-exe, как минимум, не загрузится на Win2k. Про более поздние версии windows, к сожалению, не в курсе
Ня! Половину прагм пришлось закомментить, правда, ибо устарели, но да, 1 килобайт получился.
MSVC 2008 — хорошая стартовая точка для начала игр с уменьшением размера текущего проекта.
та штука компилится в 4кб, зависимости - RTL70.BPL, KERNEL32.DLLты как-то странно компилил, у меня скомпилилась без всяких rtl70, зависимости смотрел по F3 Тоталом
ты как-то странно компилил, у меня скомпилилась без всяких rtl70, зависимости смотрел по F3 Тоталомага, я включил использование run-time packages. Если бы борланд и микрософт сотрудничали, то они бы могли быть включены в состав дистрибутива ОС... а так да, этот пакетик довольно много весит. Кстати, стройка по умолчанию их использует.
Оставить комментарий
Helga87
Ищу компилятор, который умеет делать минимальный размер .exe и который умеет собирать виндовые бинарники (достаточно 32-битных). Язык не важен, хотя подозреваю, что компилятор-победитель совершенно случайно окажется С-компилятором.Требуется, чтобы .exe не зависел от внешних библиотек, отличных от стандартных виндовых. Минимальность .exe проверяется на программе "Hello, world!". Пока что в победителях Visual Studio с 56 кб без внешних зависимостей и TinyC с1536 байтами и зависимостью на msvcrt.dll.