Как через gcc(g++) компилировать такой же маленький вес как из под компилятора Visual Studio? В интернете ни нашел годной инфы, ну что это было 49 стало 47 килобайтов. (Код из под вижуалки 20кб ). Кто сталкивался, подскажите плс?
#include <Windows.h>
#define HELLO_MSG L"Hello dear "
extern "C" int _start()
{
return wWinMain(NULL,NULL,NULL,0);
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
DWORD dwNameSize = 0;
GetUserNameW(NULL,&dwNameSize);
if(GetLastError() != ERROR_INSUFFICIENT_BUFFER){
ExitProcess (-1);
}
LPWSTR lpwszHello = (LPWSTR)LocalAlloc(0,dwNameSize * 2 + 2 + sizeof(HELLO_MSG));
lstrcpyW(lpwszHello,HELLO_MSG);
if(GetUserNameW(lpwszHello + lstrlenW(HELLO_MSG),&dwNameSize))
MessageBoxW(0,lpwszHello,L"From World",MB_ICONINFORMATION | MB_OK);
LocalFree(lpwszHello);
ExitProcess(0);
return 0;
}
-s - обрезать дебажную инфу, -fno-exceptions и -fno-rtti - чтобы использовать фичи плюсов без тех, что требуют рантайма, -fno-ident - чтобы убрать ident строку с версией компилятора, если такая есть, -flto - чтобы включить link-time оптимизации типа удаления неиспользуемых функций, -Os - оптимизировать код для уменьшения его размера.Убираем црт и тд: gcc test.cpp -nodefaultlibs -nostartfiles -Wl,-subsystem,windows -e_start -lkernel32 -luser32 -ladvapi32 -o test_nocrt.exe test_nocrt.exe=9kb
Спс ребята-s - обрезать дебажную инфу, -fno-exceptions и -fno-rtti - чтобы использовать фичи плюсов без тех, что требуют рантайма, -fno-ident - чтобы убрать ident строку с версией компилятора, если такая есть, -flto - чтобы включить link-time оптимизации типа удаления неиспользуемых функций, -Os - оптимизировать код для уменьшения его размера.
Еще можно /01(Приоретет размера) /Os (Отдавать Приоретет размеру)Нуу вот пример
Код:#include <Windows.h> #define HELLO_MSG L"Hello dear " extern "C" int _start() { return wWinMain(NULL,NULL,NULL,0); } int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow) { DWORD dwNameSize = 0; GetUserNameW(NULL,&dwNameSize); if(GetLastError() != ERROR_INSUFFICIENT_BUFFER){ ExitProcess (-1); } LPWSTR lpwszHello = (LPWSTR)LocalAlloc(0,dwNameSize * 2 + 2 + sizeof(HELLO_MSG)); lstrcpyW(lpwszHello,HELLO_MSG); if(GetUserNameW(lpwszHello + lstrlenW(HELLO_MSG),&dwNameSize)) MessageBoxW(0,lpwszHello,L"From World",MB_ICONINFORMATION | MB_OK); LocalFree(lpwszHello); ExitProcess(0); return 0; }
Компилируя так: gcc test.cpp -municode -Wl,-subsystem,windows -o test.exe test.exe = 139kb
Убираем црт и тд: gcc test.cpp -nodefaultlibs -nostartfiles -Wl,-subsystem,windows -e_start -lkernel32 -luser32 -ladvapi32 -o test_nocrt.exe test_nocrt.exe=9kb
дебаг
а ничего, что билды с оптимизациями никто в здравом уме не отлаживает?))) Кроме целей реверсаТакже сложнее отладка.
Без разницы, билд с оптимизацией или без, вообще пох что отлаживать если у тебя на руках дебаг информацияа ничего, что билды с оптимизациями никто в здравом уме не отлаживает?))) Кроме целей реверса