Intro
Utilizând un sistem de operare Unix-like, nu e prea mare plăcăre, ca în scopuri educative, să-ți părăsești, măcar mediul pentru a utiliza Win32 API. Totuși, există posibilitatea de cross-compilare, față de care mulți sunt sceptici. În orice caz, compilez strict în scopuri educative, fără a reutiliza binarele în altă parte.
Necesitate
Studiind cursul de "Event-Driven Programming on Win32 API", ar fi trebuit să-mi trag o mașină virtuală cu oarecare Windows și să-mi ridic tot environmentul meu preferat pe acea mașinică virtuală, ceea ce nu mi-a părut cea mai bună idee la prima vedere, dar e o ieșire din situație și asta.
Cerințe
- Un calculator cu sistem de operare unix-like;
- Librăriile MinGW și compilatorul mingw-gcc pentru Linux sau pentru Mac OS X.
- Ceva alcool: Wine. Pentru Mac OS X recomand WineBottler.
Notă: În distribuțiile linux veți găsi de obicei pachete precompilate cu mingw32-gcc și wine.
Utilizare
i386-mingw32-gcc -mwindows file.c -o file.exe
Executăm din linia de comandă:
wine file.exe
Ce poate fi mai simplu? ; )
Ce poate fi mai simplu? ; )
În dependență de mediul de instalare și variabila $PATH probabil să fie necesară rularea compilatorului prin path absolut, sau ajustarea variabilei $PATH.
Plus, dacă utilizezi vim, poți mapa compilarea și executarea, unui shortcut, cum am făcut-o eu:
Plus, dacă utilizezi vim, poți mapa compilarea și executarea, unui shortcut, cum am făcut-o eu:
nmap <F8>:<C-U>!i386-mingw32-gcc -mwindows %:r.c -o %:r.exe && wine %:r.exe<CR>
Outro
Utilitatea Cross-compiling-ului este extrem de mare. La fel putem compila produse spre exemplu pentru arm, sau oricare altă arhitectură de destinație. Acum poți compila același cod practic pe orice mașină.
Happy programming!