2013-05-13 9 views
5

Vorrei sapere come impedire a gcc con Cygwin di aggiungere automaticamente l'estensione .exe ai file compilati, perché mi sono creato molta confusione con i "file mancanti". Per contesto, sto lavorando a un progetto C per università e di solito lavoro nei laboratori che eseguono Ubuntu (dual-boot con Windows), ma per lavorare da casa preferisco usare la mia macchina Windows, ergo Cygwin. Se rimuovo solo l'estensione funziona ancora bene su entrambi i sistemi, ma è piuttosto frustrante dover cambiare il comando per includere l'estensione ogni volta che l'ho appena compilato con Cygwin.Come posso interrompere gcc con Cygwin aggiungendo ".exe" agli eseguibili compilati?

Ho cercato le FAQ da Cygwin per scoprire che probabilmente è un problema correlato a una variabile di ambiente in .bashrc o .bash_profile (see here), ma non sono un ninja a linea di comando e non ho molta familiarità con la configurazione di modifica file ... ho trovato due questioni correlate, così che mostrano lo stesso comportamento, ma non hanno nulla a che fare con il tentativo di cambiarlo:

Compiling with gcc (cygwin on windows)

Executable file generated using gcc under cygwin

Tutte le idee?

EDIT: In realtà è per un progetto MPI in C quindi ho un Makefile che chiama mpicc ma che non è veramente rilevante per il problema, dal momento che ho appena provato anche con gcc ed entrambi fanno la stessa cosa. Ai fini di questa domanda, i comandi e le uscite che ricevo sono:

$ gcc -o hello hello.c 
$ ls 
hello.c hello.exe 
$./hello 
Hello, world! 
$./hello.exe 
Hello, world! 

Nota che in esecuzione con o senza l'estensione fa la stessa cosa nel guscio, ma non lo fa con mpirun che è per questo che voglio cambia questo comportamento.

EDIT: Alla fine ho deciso che Windows non è l'ambiente di programmazione per me. D'ora in poi tutto il lavoro che può essere fatto in Linux sarà. Ringrazia tutti.

+0

Qual è la riga di comando che si sta utilizzando per richiamare gcc? –

+0

Questo non risponde alla tua domanda, ma potresti provare a eseguire Ubuntu in una macchina virtuale come VirtualBox. Quindi non dovrai preoccuparti di problemi come questo e il tuo ambiente a casa può essere esattamente come quello a scuola. –

risposta

2

L'estensione exe automatica per i file eseguibili esiste per un motivo (Windows lo richiede). Dovresti sconsigliare (aka istruire :-) tu stesso e accettare il modo in cui funziona Cygwin. Questa è una funzionalità radicata così profondamente nelle viscere di Cygwin/Windows che è quasi impossibile farla girare senza di essa.

Per un "Unix feeling su Windows" con un approccio diverso, si consiglia di verificare AT&T's UWin.

+0

Cygwin ha davvero bisogno di compilare programmi con l'estensione se non modifico il loro funzionamento? Lo uso a malapena e creo solo programmi da riga di comando che verranno eseguiti solo su Cygwin (almeno su questa macchina). Non sto cercando di avere Unix in Windows, se lo facessi, installerei invece Unix. – Leeward

+2

In realtà il kernel e l'API di Windows NT non richiedono l'estensione .exe. Ecco perché è possibile rilasciare l'estensione da un programma in Cygwin e verrà comunque eseguita correttamente. Puoi anche far funzionare un programma di questo tipo in cmd.exe se aggiungi "' .'. " alla variabile d'ambiente 'PATHEXT', in questo modo:' imposta PATHEXT =.;% PATHEXT% '. Non conosco un modo per farli funzionare in Esplora risorse però. – ak2

+0

Puoi sempre 'mv foo.exe foo' se questo risolve il tuo problema. – Jens

Problemi correlati