Compilando C en windows
8 enero, 2025
- Introducción.
- 1.MINGW…
- 2. Cygwin o mingw-w64.
- 3. MSYS2.
- 3.1 Descargando MSYS2.
- 3.2 Actualizando MSYS2.
- 3.3 Estudiando el gestor de paquetes pacman.
- 3.3.1 Consultar Paquetes.
- 3.3.2 Instalar Paquetes.
- 3.3.3 Borrar Paquetes.
- 3.4 Instalando mingw (con gcc, gdb, make, etc).
- 3.4.1 Comprobamos si tenemos los paquetes de gcc disponibles con pacman -Ss gcc.
- 3.4.2 Instalar el MINGW64 UCRT: The Universal C Runtime (UCRT) (Windows 10, 11 y Xbox) mingw-w64-ucrt-x86_64 en Msys2 Msys.
- 3.4.3 Instalando MINGW-toolchain(herramientas de compilación).
- 3.5 Instalando unzip dentro del Msys2 mingw..
- 3.6 Instalando Irlich para crear juegos dentro de Msys2 mingw..
- 3.7 Instalando el make en Msys2 mingw..
- 3.8 Poniendo el compilador en nuestra variable de entorno.
- 3.9 Creando nuestro programa.
- 3.10 Creando un juego con la librería raylib.
- 4.Visual studio community.
- 5. WSL 2 + librerías para exportar a windows
Introducción
Aunque podemos hacer el proceso de compilación con una sola instrucción, en realidad el proceso de compilación del código C primero se compilan todos los archivos.c a archivos objeto o archivos.o para después enlazarlos con el linker (o ld), el archivo binario o ejecutable será un archivo.exe o en linux sin extensión que se ejecutará con ./archivo.
Existen números entornos de compilación en Windows pero el más común es el MSYS2 ya que nos proporciona el gestor de paquetes pacman y es la evolución de MINGW y CYGWIN.
1.MINGW
MinGW es un entorno de programación que implementa el compilador GCC (que es de Linux) para poder utilizarlo en Windows, además incluye un conjunto de la API de Windows de tal manera que permite crear ejecutables para Windows.
Cuando lo instales tenemos que configurar la variable de entorno PATH para añadir la carpeta c:\MinGW\bin.
1.1 Instalando MinGW
Vamos a https://sourceforge.net/projects/mingw/files/ para descargarlo.
Una vez ejecutado el instalador, lo suyo es instalarlo en la ruta c:\MinGW:



Cuando termina nos abre el ejecutable c:\\MinGW\minGW-setup.exe en el que tendremos que ir marcando los paquetes que queremos que se instalen, solo tenemos que marcar mingw32-base-bin:


Una vez marcada le tenemos ue decir que empiece la instalación aplicando los cambios:




1.2 Configurando la variable de entorno PATH



1.3 Creando nuestro primer programa en C
En un bloc de notas escribe:

Guárdalo como miprograma.c y en tipo selecciona Todos los archivos:

Abrimos un CMD o símbolo del sistema:
Nos situamos en nuestra carpeta donde está el programa escrito en C, en mi caso C:\Users\tu_usuario\Dosuments\programas:

Escribimos gcc miprograma.c -o miprograma.exe -ansi -pendantic -Wall
-o es para especificar el nombre del archivo resultante
-ansi es para indicar que queremos utilizar el estandar c90 o ansic
-Wall es para mostrar todos los mensajes de aviso o error


1.4 Añadiendo programas dentro de mingw
De repente no podemos compilar nuestro programa por el formato de codificación del texto y necesitamos una herramienta que comvierta los archivos de Linux a dos o al revés, para eso tenemos que ver si esta utilidad existe en mingw, vamos a ejecutar C:\MinGW\bin\ mingw-get.exe:







2. Cygwin o mingw-w64
Es un avance del proyecto original mingw.org, creado para admitir el compilador GCC en sistemas Windows. Se bifurcó en 2007 para brindar soporte para 64 bits y nuevas API. Desde entonces ha ganado un uso y distribución generalizados.
Mingw-w64 interactúa con Cygwin y MSYS2
Nos descargamos el cywin desde su web https://cygwin.com/install.html
2.1 Instalando Cygwin
Un vez descargado hacemos doble click sobre setup-x86_64.exe y pinchamos todo en siguiente.






Se descargará la versión mínima de Cygwin que son unos 100mb:

Cuando termine se abrirá el programa solo, pinchamos en siguiente:

Pinchamos de nuevo en siguiente para agregar los paquetes básicos:



Por defecto la ruta de instalación es C:\cygwin64 , debemos de copiar y pega en esta ruta el instalador ya que lo vamos a necesitar para descargarnos más paquetes.

2.2 Descargando nuevos paquetes en Cygwin
Nos descargamos el instalador o si ya lo teníamos en C:\cygwin64 lo ejecutamos:

Seleccionamos Download Without Installing y pinchamos en siguiente:




Seleccionamos en View Full y escribimos el nombre del paquete a instalar:

Seleccionamos el paquete(1), elegimos su versión (2 y 3) y pinchamos en siguiente (4):



2.3. Descargando desde el terminal
No ponemos en el directorio de cywin y ponemos:

setup-x86_64 -q -P wget,tar,qawk,bzip2,subversion,vim
setup-x86_64.exe -q -P wget -P gcc-g++ -P make -P diffutils -P libmpfr-devel -P libgmp-devel -P libmpc-devel
puedes ver los paquetes disponibles en: https://cygwin.com/packages/
2.3.1 Descargando ssh por ejemplo
Tambien ponemos
setup-x86_64 -q -P ssh-clients
generamos el certificado

2.4 Agregando Cygwin al path
Copiamos la ruta C:\cygwin64\bin
3. MSYS2
Es una colección de herramientas y bibliotecas que le brindan un entorno fácil de usar para crear, instalar y ejecutar software de Linux en windows.
Obtienes acceso a un entorno similar a Unix en tu sistema Windows, lo que significa que puedes utilizar comando y herramientas de Unix. Además MSYS2 incluye un administrador de paquetes llamado pacman, que simplifica la administración de paquetes de software, incluido MinGW (que es el port de gcc de Linux pero este es para windows)..

Si durante la instalación has pinchado todo en aceptar se te habrá creado una carpeta en c:\msys2
3.1 Descargando MSYS2
Nos descargamos el Msys2 de su web oficial: https://www.msys2.org/
Creamos los accesos directos de msys2.exe(el sistema para instalar cosas) y mingw64 (para compilar)


3.2 Actualizando MSYS2
Abre Msys.exe y actualiza la base de datos o repositorio
pacman -Syu
Al finalizar te pedirá que escribas ”y” y se cerrá la consola

Reinicia, recuerda que la aplicación es MSYS2 MSYS:

Vuelves a abrir Msys.exe y escribes
Pacman -Su

3.3 Estudiando el gestor de paquetes pacman
3.3.1 Consultar Paquetes
——————————
pacman -Ss [package-name]
pacman -Ss msys
pacman -Ss mingw64
pacman -Ss ucrt64
pacman -Ss mingw32
pacman -Ss clang64
pacman -Ss clang32
3.3.2 Instalar Paquetes
pacman -S [package-name]
3.3.3 Borrar Paquetes
pacman -Rsc [package-name]
3.4 Instalando mingw (con gcc, gdb, make, etc)
3.4.1 Comprobamos si tenemos los paquetes de gcc disponibles con pacman -Ss gcc
Como el MSYS2 MSYS (el lila además de instalar podemos comprobar lo que tenemos instalado):

3.4.2 Instalar el MINGW64 UCRT: The Universal C Runtime (UCRT) (Windows 10, 11 y Xbox) mingw-w64-ucrt-x86_64 en Msys2 Msys
pacman -S mingw-w64-ucrt-x86_64-gcc
pacman -S mingw-w64-ucrt-x86_64-gdb
pacman -S mingw-w64-ucrt-x86_64-make
pacman -S mingw-w64-ucrt-x86_64-windows-default-manifest # Sólo si al compilar falta «default-manifest.o»
3.4.3 Instalando MINGW-toolchain(herramientas de compilación)
pacman -S –needed base-devel mingw-w64-x86_64-toolchain

Pulsamos intro y escribimos y
Binutils son las herramientas para generar los binarios
3.5 Instalando unzip dentro del Msys2 mingw

3.6 Instalando Irlich para crear juegos dentro de Msys2 mingw
Instalo irrlicht para crear juegos

3.7 Instalando el make en Msys2 mingw

El mingw lo renombra como ming-make

3.8 Poniendo el compilador en nuestra variable de entorno
Una vez que hemos instalado el mingw ya tendremos disponible el compilador de C en la ruta: C:\msys64\mingw64\bin

Copiamos la ruta:

Escribimos en el buscador “variables de entorno” y pinchamos en Editar variables de entorno del sistema:

Introducimos la ruta que hemos copiado antes:

Ahora al escribir gcc en el cmd ya nos saldrá algo
3.9 Creando nuestro programa
Creamos una carpeta en el escritorio y dentro el archivo main.c con este contenido:
#include<stdio.h>
int main(){
printf("hola mundo");
return 0;
}
Lo compilamos con “gcc main.c -o miprograma”


3.10 Creando un juego con la librería raylib
En este caso vamos a utilizar raylib como librería estática, ponemos en Google graylib github y nos lleva a esta página, pinchamos en la última reléase, en mi caso la 5.0

Nos desplazamos hasta abajo del todo para pinchar en la versión de mingw:

Creamos una nueva carpeta en nuestro escritorio y dentro ponemos los includes y la librería que nos hemos descargado:

Vamos a la wiki de github para ver si hay algún ejemplo:
https://github.com/raysan5/raylib/wiki/Working-on-Windows
Copiamos el ejemplo que sale:

Ejecutamos el comando que sale más abajo pero cambiando el nombre de nuestro archivo c: gcc -o raylibhelloworld.exe main.c -lraylib -lgdi32 -lwinmm


Perfecto!

Por comodidad creamos un make.bat con el comando de compilación de tal forma que solo tengamos que escribir en el cmd make.bat:

3.10.1 Poniendo un programa bonito en raylib
Vamos a la web de raylib https://www.raylib.com/examples.html a copiar algunos ejemplos, en mi caso elegiré el del paisaje:

Copio el código:

Y creo un archivo main.c donde lo pego:


Recuerda que el comando de compilación es :gcc -o mijuego.exe main.c -lraylib -lgdi32 -lwinmm
