2013-05-13 28 views
5

Cygwin altında gcc'nin derlenmiş dosyalara otomatik olarak .exe uzantısını eklemesini nasıl engelleyebileceğimi bilmek isterim; çünkü kendime "eksik dosyalar" ile kendimi çok fazla karışıklığa neden oldum. Bağlam için, üniversite için bir C projesi üzerinde çalışıyorum ve genellikle Ubuntu (Windows ile çift önyükleme) çalıştıran laboratuarlarda çalışıyorum, fakat evden çalışmak için Windows makinemi kullanıyorum, Cygwin ergo. Yalnızca uzantıyı kaldırırsam, her iki sistemde de gayet iyi çalışır, ancak Cygwin altında derlediğimde, uzantıyı içerecek şekilde komutu değiştirmek zorunda kalmak oldukça sinir bozucudur.Cygwin altında gcc'i derlenmiş çalıştırılabilir dosyalara ".exe" ekleyerek nasıl durdurabilirim?

Cybwin'den SSS'yi inceledim, bunun büyük olasılıkla .bashrc veya .bash_profile (see here) ortam değişkeni ile ilgili bir sorun olduğunu, ancak komut satırı ninja değilim ve düzenleme yapılandırmasına çok aşina değilim

Compiling with gcc (cygwin on windows)

Executable file generated using gcc under cygwin

Herhangi fikirleri: dosyalar ... Ben de aynı davranışı gösterir, ancak bunu değiştirmeye çalışıyorum ile ilgisi olmayan iki ilgili sorular bulundu?

DÜZENLEME: Aslında C projesinde bir MPI için bu yüzden mpicc olarak adlandırılan bir Makefile'm var ama bu sorunla gerçekten alakalı değil, çünkü gcc ile de çalıştım ve her ikisi de aynı şeyi yapıyor. uzantısı olan veya olmayan çalışan kabukta aynı şeyi yapar

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

Not ama ben istiyorum neden mpirun ile değil: Bu sorunun amacına uygun olarak, ben olsun komutları ve çıkışlar vardır Bu davranışı değiştir.

DÜZENLEME: Sonuçta Windows'un benim için programlama ortamı olmadığına karar verdim. Artık Linux'ta yapılabilecek her işte olacak. Hepinize teşekkürler.

+0

gcc'yi çağırmak için kullandığınız komut satırı nedir? –

+0

Bu, sorunuzu yanıtlamıyor, ancak VirtualBox gibi sanal bir makinede Ubuntu çalıştırmayı denemek isteyebilirsiniz. Öyleyse bunun gibi herhangi bir konuda ve evdeki çevrenizde endişelenmenize gerek kalmayacak, tıpkı okuldaki gibi olabilir. –

cevap

2

Yürütülebilir dosyalar için otomatik exe uzantısı bir sebepten dolayı var (Windows bunu gerektirir). Özür dilemelisiniz (aka kendiniz eğitin ve Cygwin'in çalışma şeklini kabul edin). Bu, Cygwin/Windows gutlarında çok derinden kök salmış bir özelliktir ve onsuz çalışmasını sağlamak neredeyse imkansızdır.

Farklı bir yaklaşımla "Windows'da Unix hissi" için AT&T's UWin ürününü incelemek istiyorsunuz.

+0

Cygwin'in nasıl çalıştıklarını değiştirmezsem, uzantıyı programlarla derlemesi gerekiyor mu? Sadece onu kullanıyorum ve sadece Cygwin'de (en azından bu makinede) çalıştırılacak komut satırı programları yapıyorum. Windows'da Unix'e sahip olmak istemiyorum, eğer yapsaydım, bunun yerine Unix'i kurardım. – Leeward

+2

Aslında Windows NT çekirdeği ve API, .exe uzantısını gerektirmez. Bu yüzden, bu süreyi Cygwin'deki bir programdan ayırabilir ve yine de tamamıyla çalıştırılabilir. Ayrıca ''.' 'Eklerseniz, böyle bir programın cmd.exe'de çalışmasını sağlayabilirsiniz. PATHEXT ortam değişkeni, şöyle ki: 'set PATHEXT =.;% PATHEXT%'. Windows Gezgini'nde çalışmasını sağlamak için bir yol bilmiyorum. – ak2

+0

Sorununuzu çözerse her zaman foo.exe foo'yu doldurabilirsiniz. UWin bağlantısı için – Jens

İlgili konular