Sono quasi sicuro che il mio problema è dovuto al fatto che il programma compilato è compilato come un eseguibile di Linux, ma voglio solo ricontrollarlo.Perché un programma compilato Linux non funziona su Windows
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello world!\n");
return EXIT_SUCCESS;
}
Il "programma" di cui sopra dovrebbe compilare su Windows e Linux bene, dal momento che è il codice sorgente compatibile, in quanto non esistono librerie specifiche del sistema operativo o qualcosa di simile.
Tuttavia, quando digito "c99 ciao.c -o hello.exe" sulla mia macchina Linux, e poi trasferisco tale "eseguibile" su una macchina Windows, si rifiuta di eseguire. Da quanto ho capito, Linux genera un file eseguibile che funziona solo su linux, quindi l'aggiunta di ".exe" non ha alcun effetto. Per costruire quel programma su Linux per Windows, avrei bisogno di ricompilare quel programma su una macchina Windows? Oppure c'è un altro metodo più semplice che funzionerà?
Stai capendo (fondamentalmente) giusto. L'eseguibile su diversi SO ha diversi formati (e diversi modelli di esecuzione). –
L'altro metodo è denominato "cross-compilation". –
Linux usa ELF per i suoi binari. – Alexguitar