Uno de los beneficios clave de WSL2 es la posibilidad de compilar binarios para Linux dentro de un entorno Linux completo, mientras se sigue trabajando desde Windows. Además, es posible configurar compilación cruzada para generar ejecutables de Windows (.exe
) directamente desde WSL2, lo cual es útil para flujos de trabajo DevOps, empaquetado o testing multiplataforma.
🎯 Objetivo Link to heading
- Compilar aplicaciones para Linux directamente en WSL2
- Generar ejecutables
.exe
de Windows desde WSL2 usando MinGW - Compilar con CMake y Go para ambos entornos
- Automatizar la compilación multiplataforma
⚙️ Paso 1: Preparar entorno de compilación en WSL2 Link to heading
sudo apt update
sudo apt install -y build-essential cmake mingw-w64 gcc g++ git
Verificar toolchains:
gcc --version
x86_64-w64-mingw32-gcc --version
🧪 Paso 2: Compilar binario nativo para Linux Link to heading
Crear archivo hello.c
:
#include <stdio.h>
int main() {
printf("Hola desde Linux\n");
return 0;
}
Compilar:
gcc hello.c -o hello-linux
./hello-linux
🪟 Paso 3: Compilar para Windows (.exe) desde WSL2 Link to heading
Usar MinGW para compilar en formato Windows:
x86_64-w64-mingw32-gcc hello.c -o hello.exe
Mover el binario a Windows:
cp hello.exe /mnt/c/Users/tuusuario/Desktop/
Ejecutar desde PowerShell:
C:\Users\tuusuario\Desktop\hello.exe
🛠️ Paso 4: Compilación cruzada con CMake Link to heading
Estructura de proyecto:
miapp/
├── CMakeLists.txt
└── main.c
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(miapp)
add_executable(miapp main.c)
Build Linux:
mkdir build-linux && cd build-linux
cmake ..
make
Build Windows:
mkdir build-win && cd build-win
cmake -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc ..
make
💡 Paso 5: Compilar con Go para ambos entornos Link to heading
sudo apt install -y golang
Go detecta plataforma con variables GOOS
y GOARCH
.
# Linux nativo
go build -o hello-linux main.go
# Windows desde WSL2
GOOS=windows GOARCH=amd64 go build -o hello.exe main.go
✅ Conclusión Link to heading
WSL2 permite compilar aplicaciones para Linux y Windows sin salir del entorno de desarrollo, facilitando pruebas, empaquetado y automatización de builds multiplataforma. Con herramientas como MinGW, CMake y Go, es posible mantener un flujo productivo y coherente desde una única máquina.