2008-12-11 8 views
6

के तहत जी ++ द्वारा निष्पादित निष्पादन योग्य का डिफ़ॉल्ट फ़ाइल एक्सटेंशन मैंने विजुअलस्टूडियो पर अपना अधिकांश काम किया है और जीसीसी या जी ++ के साथ अधिक अनुभव नहीं है। जब मैंने आज सुबह अपने पीसी पर साइगविन का उपयोग करके एक (उदा। Aprogram.cpp) संकलित करने की कोशिश की, तो मुझे (aprogram.exe) मिला जब मैंने अपने उबंटू बॉक्स पर एक ही चीज़ को संकलित करने की कोशिश की (मुझे एप्रामोग्राम) w/o कोई एक्सटेंशन । मैं बस सोच रहा हूं कि कोई मुझे इतना बताने के लिए पर्याप्त क्यों है। यह सवाल सिर्फ जिज्ञासा से बाहर है। :)सिग्विन बनाम लिनक्स

अग्रिम धन्यवाद!

संपादित करें: (जिमी की टिप्पणी से) जी ++ के तहत Cygwin चूक .exe को

+0

g ++ के बारे में सरल उत्तर। – Svante

+0

गंभीरता से, अपना शीर्षक वर्णनात्मक बनाएं, जैसे "g ++ 'आउटपुट के फ़ाइल नाम में कोई एक्सटेंशन क्यों नहीं है?" – Svante

+0

शीर्षक बेहतर तय किया गया। :) –

उत्तर

6

.exe एक खिड़कियों बात है। यूनिक्स एक्सटेंशन के बारे में परवाह नहीं करता है। निष्पादन योग्यता फ़ाइल के साथ-साथ फ़ाइल की सामग्री पर मेटाडेटा पर आधारित है। जी ++ साइगविन के माध्यम से वास्तव में एक विंडोज ऐप नहीं है, इसलिए इसमें इसकी यूनिक्स जड़ें हैं।

+1

आईआईआरसी सिगविन जी ++ वास्तव में डिफ़ॉल्ट 'ए.एक्सई' सहित डिफ़ॉल्ट रूप से .exe एक्सटेंशन को डिफ़ॉल्ट करता है, यदि कोई नहीं दिया जाता है – Jimmy

10

यह सिर्फ एक नामकरण सम्मेलन है। यूनिक्स/लिनक्स पर, निष्पादन योग्य एक्सटेंशन नहीं हैं, केवल निष्पादन योग्य बिट।

18

यह आसान है: यूनिक्स, you don't need no steenkin' extensions पर। वास्तव में, एक "एक्सटेंशन" जैसे .c सिर्फ एक सुविधाजनक नामकरण सम्मेलन है; विंडोज के विपरीत, फ़ाइल सिस्टम फ़ाइल नाम को एक स्ट्रिंग, .c और सभी के रूप में देखता है।

वास्तव में अच्छा समय के लिए, एक सी प्रोग्राम को -o ध्वज के साथ संकलित करें। आपका निष्पादन योग्य अभी भी दिखाएगा --- निष्पादन योग्य के लिए डिफ़ॉल्ट नाम नाम: a.out

+0

यह '।' के बाद भी जानकारी का उपयोग करता है। अपने खोल में सुंदर रंग प्रिंट करने के लिए। – helloandre

+0

एमएस-डॉस वास्तव में फ़ाइल नामों को 8 वर्ण नाम और 3 वर्ण एक्सटेंशन के रूप में संग्रहीत करता है। विंडोज 95 और बाद वाले वर्शन फ़ाइल नाम को एक लंबी स्ट्रिंग के रूप में माना जाता है। दुर्भाग्य से, पुरानी आदतों को तोड़ना मुश्किल हो सकता है। जब भी सही वाइल्डकार्ड * – Ferruccio

+0

लगभग - एनटीएफएस पर भी एक अंतिम "।" का उपयोग करने के लिए आप अभी भी *। * का उपयोग कर लोगों को देख सकते हैं। एक फ़ाइल नाम पर अनदेखा/हटा दिया जाता है (उसी तरह से उस मामले को अनदेखा किया जाता है), किसी भी अच्छे कारण के लिए नहीं। –

3

आप सोच रहे थे तो कैसे यूनिक्स पर कार्यक्रम पर अमल करने के लिए, बस अपने कार्यक्रम के साथ फ़ोल्डर में नेविगेट आप निष्पादित करने के लिए (aprogram) और टाइप इच्छा

./aprogram 

यह खोल आप निष्पादित करने के लिए 'इच्छा बता देंगे वर्तमान निर्देशिका में aprogram '।

2

यदि आप आउटपुट को .exe एक्सटेंशन रखना चाहते हैं तो बस ऐसा करने के लिए ध्वज का उपयोग करें (उदा।-Aprogram.exe)। यह लिनक्स के तहत किसी भी तरह से ठीक काम करेगा।

लिनक्स के तहत एक प्रोग्राम निष्पादित करने की क्षमता फ़ाइल की अनुमतियों पर आधारित है (chmod देखें)। निष्पादन निष्पादन स्वचालित रूप से gcc/g ++ द्वारा सेट किया जाएगा।

3

निष्पादन योग्यों के पास यूनिक्स दुनिया में कोई विस्तार नहीं है, क्योंकि वे खोल में निष्पादित होने के लिए हैं। निम्नलिखित की कल्पना करें:

cat.bin file.txt | less.bin 

यह बदसूरत है! यूनिक्स फ़ाइल-प्रकार का पता लगाने के लिए प्रत्येक फ़ाइल की शुरुआत में तथाकथित जादू बाइट्स का उपयोग करता है। ईएलएफ नामक डिफ़ॉल्ट बाइनरी प्रारूप के लिए, शुरुआत में 4 बाइट शब्द 7f 45 4c 46 है। सभी फ़ाइल स्वरूपों के लिए यह संभव नहीं है। सी कोड या जावा कोड पर विचार करें। वे दोनों टिप्पणियों से शुरू कर सकते हैं, और बिल्कुल वही दिख सकते हैं। तो आपको अभी भी फ़ाइल-नाम एक्सटेंशन का उपयोग करना होगा, और जब यह उचित हो, तब यह अच्छी बात है।

+1

ठीक है, आपको विंडोज़ में .exe टाइप करने की आवश्यकता नहीं है ... हालांकि ईएलएफ हेडर पर अच्छा बिंदु। – Macke

1

ls/bin विस्तार के बिना कार्यक्रमों में से बहुत कुछ है और उन सभी को कर रहे हैं :)

ls -l/bin आप उन सभी है + x उन्हें एक निष्पादन योग्य के रूप में चिह्नित करने के लिए झंडा देखेंगे।

1

ईमानदारी से, बस उन्हें .elf नाम दें।और अगर आप यकीन है कि क्या फ़ाइल प्रकार वे कर रहे हैं नहीं कर रहे हैं, निष्पादित करें:

$ file MyFile 

यह आपको फ़ाइल की सामग्री हैं क्या बता देंगे, और आप एक नाम इस तरह से ले सकते हैं, लेकिन यह आवश्यक नहीं है - बस कॉस्मेटिक यदि आप सभी जीवन को विस्तारित करने के लिए उपयोग किया गया है।

संबंधित मुद्दे