2013-05-13 67 views
5

我想知道如何防止Cygwin下的gcc自動將.exe擴展名添加到已編譯的文件中,因爲我只是讓自己對「缺少的文件」產生了很大的困惑。在上下文中,我正在爲大學開發一個C項目,我通常在運行Ubuntu的實驗室(與Windows雙啓動)工作,但要在家工作,我更喜歡使用我的Windows機器,請參閱Cygwin。如果我只是刪除了擴展,它仍然可以在任何一個系統上正常工作,但是當我在Cygwin下編譯它時,必須更改命令以包含擴展,這是相當令人沮喪的。如何在Cygwin中添加「.exe」到已編譯的可執行文件來阻止gcc?

我查了一下Cygwin的FAQ,發現它可能是一個與.bashrc或.bash_profile(see here)中的環境變量有關的問題,但我不是命令行忍者,也不是很熟悉編輯配置文件...我發現了兩個相關的問題還有,顯示相同的行爲,但什麼都沒有做,試圖改變它:

Compiling with gcc (cygwin on windows)

Executable file generated using gcc under cygwin

任何想法?

編輯:它實際上是在C項目中的MPI,所以我有一個調用mpicc的Makefile,但這不是真的與問題相關,因爲我只是嘗試了gcc,兩者都做同樣的事情。對於這個問題的目的,我得到的命令和輸出:

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

注意,帶或不帶擴展名運行,那麼在外殼同樣的事情,但它不與的mpirun這就是爲什麼我要改變這種行爲。

編輯:我最終決定,Windows不是我的編程環境。從現在開始,所有可以在Linux中完成的工作都將完成。謝謝大家。

+0

你用來調用gcc的命令行是什麼? – 2013-05-13 13:39:23

+0

這並不回答你的問題,但你可能想嘗試在像VirtualBox這樣的虛擬機上運行Ubuntu。那麼你不必擔心這樣的問題,你的家庭環境可以完全像你在學校的環境。 – 2013-05-13 15:42:37

回答

2

可執行文件的自動exe擴展是有原因的(Windows需要它)。你應該自己去解密(又名: - ),並接受Cygwin的工作方式。這是Cygwin/Windows膽大包根深蒂固的一個特點,幾乎不可能在沒有它的情況下運行它。

對於「Windows感覺在Windows上」使用不同的方法,你想看看AT&T's UWin

+0

如果我不修改它們的運行方式,Cygwin是否真的需要使用擴展名編譯程序?我幾乎沒有使用它,只製作只能在Cygwin中運行的命令行程序(至少在本機上)。我不打算在Windows中使用Unix,如果我這樣做,我只需要安裝Unix。 – Leeward 2013-05-13 14:03:11

+2

其實Windows NT內核和API不需要.exe擴展名。這就是爲什麼你可以從Cygwin的程序中刪除擴展,它仍然會被正確執行。如果你添加''。'',你也可以得到這樣的程序在cmd.exe中運行。到'PATHEXT'環境變量,就像這樣:'set PATHEXT =。;%PATHEXT%'。我不知道如何讓它們在Windows資源管理器中工作。 – ak2 2013-05-13 14:49:58

+0

如果解決了你的問題,你總是可以使用'mv foo.exe foo'。 – Jens 2013-05-13 15:07:24

相關問題