Compilando C en windows

8 enero, 2025 0 Por admin
Compilando C en 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

4.Visual studio community

5. WSL 2 + librerías para exportar a windows