Скачал чудо под названием lazarus, сохранил дефолтный проект, скомпилировал и получил 14-ти метровый exe'шник! ОДНА ПУСТАЯ ФОРМА! Я не знаю как жить дальше...
скомпили в этом чуде такой кодес (без форм и прочего говна естественно), и смотри не выпади Code: program Project2; function MessageBoxA(hWnd: Integer; lpText, lpCaption: PAnsiChar; uType: Integer): Integer; stdcall; external 'user32.dll' name 'MessageBoxA'; begin MessageBoxA(0, 'Hello world', 'Hello world', 0); end.
Оно пончтно, что на чистом winapi будет маленьий размер(кстати какой? сижу с другого компа), но вынесло то, что ребятам не пришло в голову разбить либу на небольшие кусочки и линковать только нужные(идеальный вариант -- линковать только те ф-ции и классы, которые используются).
На сях при включении максимальной оптимизации на размер и еще кое-каких трюках размер ехе-шника и длл-ки я делал по 1024 байт. Можно и меньше, но он работать перестает корректно. И это не хелловорлд, это недо-бекдор, скрывающий файлы определенного типа (кинцо, прон). Зато на каком-нибудь VB простой хелловорлд уже 500кб+ весит... 14 метров - это новый рекорд.
Hello World в MessageBoxA на пуребейсике в стандартной компоновке 4 608 байт на фасме без лишака 4 312 байт если сжать UPX будет гдет 1 КБ
ты это не поймешь у каждой среды свой способ линковки кода один добавит свой готовый код, другой заюзает системные либы
компиль и линкер являются абсолютно отдельными частями. и то, что какая то иде по дефолту передает им ненужные параметры ничего не значит. иде никак не связана с размером бинаря. если вам не нравится размер - правьте параметры. практически любая иде предоставляет такую возможность. задача иде вообще не в этом заключается.
ну потому что там скорее всего прилинковуется куча хрени. на delphi 7 с правильно настроенными SysInit.pas и system.pas можно выжать мсбокс в ~900 байт.
наркоман чтоле? Code: format pe gui 4.0 entry start include 'win32a.inc' start: invoke MessageBox,NULL,message,message,MB_OK invoke ExitProcess,0 message db 'Hello, World!',0 data import library kernel32,'kernel32.dll',\ user32,'user32.dll' include 'api/kernel32.inc' include 'api/user32.inc' end data ровно 1024 байта выходит.
все или нет, но меня именно в этой среде именно он и интерисует. Для большинства проектов у меня есть c# и python, но трои на них писать не вариант. Есть еще PureBasic, но меня немного бесит его типы данных и объявления.