2010-09-18 14 views
14

मैं इस कार्यक्रम को संकलित "बाइनरी फ़ाइल को कार्यान्वित नहीं कर सकते हैं":जीसीसी संकलित युग्मक देना

gcc -c "hello.c" -o hello 

और जब मैं नमस्ते निष्पादित करने के लिए प्रयास करते हैं, मैं

bash: ./hello: Permission denied 
:

#include <stdio.h> 

int main() 
{ 
    printf("Hello World!"); 
    return 0; 
} 

इस आदेश के साथ

क्योंकि अनुमतियां

-rw-r--r-- 1 nathan nathan 856 2010-09-17 23:49 hello 

किसी कारण से ??

लेकिन जो कुछ भी ... अनुमतियाँ बदल रहा है और फिर से निष्पादित करने के लिए कोशिश कर के बाद, मैं

bash: ./hello: cannot execute binary file 

मैं जीसीसी उपयोग कर रहा हूँ (उबंटू 4.4.3-4ubuntu5) 4.4.3

क्या बजे मिल मैं यहाँ गलत कर रहा हूँ? यह स्पष्ट होना चाहिए ... मेरे लिए इस थके हुए आंखों का उपयोग करने के लिए मेरी थका हुआ आंखों का उपयोग करना बहुत देर हो चुकी है ....

पीएस मैं (कभी-कभी) कार्यक्रमों पर काम करता हूं जो हैलो वर्ल्ड की तुलना में अधिक परिष्कृत है, लेकिन जीसीसी बोर्ड में यह कर रहा है ...

+2

निष्पादित करें: * फ़ाइल हैलो * और यहाँ परिणाम पेस्ट करें। आपको इसके साथ संकलन करना चाहिए: gcc hello.c -o हैलो – karlphillip

+0

उह, -सी यह था, धन्यवाद। –

+0

** हमेशा ** सभी चेतावनियों और डिबगिंग जानकारी पूछें (उदाहरण के लिए 'gcc -Wall -g hello.c -o हैलो') –

उत्तर

22

-c बाहर ले जाएं। यह वस्तु फ़ाइलों को बनाने के लिए है, निष्पादन योग्य नहीं।

+0

बस जोड़ने के लिए, आपके बनाने की' हैलो' फ़ाइल एक ऑब्जेक्ट फ़ाइल है (यदि वह नहीं था स्पष्ट)। यदि आप '-c' विकल्प के साथ बनाते हैं तो इसे' hello.o' नाम दिया जाना चाहिए। – Starkey

6

-c ध्वज यह लिंक करने के लिए कहता है, इसलिए आपके पास ऑब्जेक्ट फ़ाइल है, बाइनरी निष्पादन योग्य नहीं है।

वास्तव में, यदि आप इसे -o ध्वज के बिना चलाते हैं, तो आप पाएंगे कि डिफ़ॉल्ट आउटपुट फ़ाइल hello.o होगी।

संदर्भ (और गिगल्स) के लिए, -c झंडे पर आदमी प्रविष्टि:

-c Compile or assemble the source files, but do not link. The linking stage simply is not done. 
    The ultimate output is in the form of an object file for each source file. 

    By default, the object file name for a source file is made by replacing the suffix .c, .i, .s, 
    etc., with .o. 

    Unrecognized input files, not requiring compilation or assembly, are ignored. 
संबंधित मुद्दे