windows system
This commit is contained in:
@@ -224,3 +224,26 @@ endif
|
||||
|
||||
Más adelante (Fase 4) aquí irán también las librerías que cambian según la
|
||||
plataforma, como `-lws2_32` para Winsock en Windows.
|
||||
|
||||
### La «magia .exe» de MSYS2
|
||||
|
||||
Sin `EXE`, el Makefile con objetivo `build/hello` parece funcionar en Windows:
|
||||
el segundo `make` dice `Nothing to be done`. No es mérito del Makefile:
|
||||
|
||||
- `make`, `ls` y la shell de `/usr/bin` son programas de MSYS2, que emula
|
||||
POSIX encima de Windows.
|
||||
- Si un programa de MSYS2 pregunta por `build/hello` y solo existe
|
||||
`build/hello.exe`, la capa de emulación responde que existe y le da la fecha
|
||||
del `.exe`.
|
||||
|
||||
| Comando | Qué ve |
|
||||
|---|---|
|
||||
| `ls -l build/hello` | Pasa por la emulación: «existe». |
|
||||
| `cmd //c dir build` | Pregunta a Windows: solo hay `hello.exe`. |
|
||||
|
||||
Con un make nativo (`mingw32-make`) esa emulación no existe: no encuentra
|
||||
`build/hello` y vuelve a enlazar cada vez. Por eso se pone el nombre real con
|
||||
`$(EXE)`.
|
||||
|
||||
**Comparación con Go:** `go build` añade `.exe` por sí mismo cuando
|
||||
`GOOS=windows`. En C, el nombre del ejecutable lo decides tú en el Makefile.
|
||||
|
||||
@@ -76,6 +76,10 @@ Si juntas dos flags de parada (`-E -S`), gana la que para antes.
|
||||
| `objdump -p hello.exe \| grep "DLL Name"` | Lista las DLL de las que depende el ejecutable. |
|
||||
| `strip hello.exe` | Quita símbolos e información de depuración. |
|
||||
| `gcc -static ...` | Enlaza estáticamente todas las librerías posibles. |
|
||||
| `uname -s` | Nombre del sistema: `Linux` en Fedora, `UCRT64_NT-...` en la terminal UCRT64 de Windows. |
|
||||
| `echo $MSYSTEM` | Entorno de MSYS2 activo. Tiene que ser `UCRT64`. |
|
||||
| `pacman -S mingw-w64-ucrt-x86_64-clang` | Instala clang para el entorno UCRT64. |
|
||||
| `pacman -S vim` | Instala `xxd` (viene con vim). Sin él, usa `hexdump -C fichero.bin`. |
|
||||
|
||||
## Make
|
||||
|
||||
|
||||
Reference in New Issue
Block a user