Gcc त्रुटि: gcc: 'cc1' को क्रियान्वित करने में त्रुटि: execvp: ऐसी कोई फ़ाइल या निर्देशिका नहीं


102

मैं सफलतापूर्वक लिनक्स मिंट 12 पर जीसीसी का उपयोग कर रहा हूं। अब मुझे एक त्रुटि मिल रही है। मैं हाल ही में कुछ कर रहा हूं। कुछ समय पहले क्लैंग का निर्माण और स्थापित नहीं किया है, लेकिन उन दोनों घटनाओं के बाद से सफलतापूर्वक संकलित किया है, इसलिए सुनिश्चित नहीं है कि क्या बदल गया है। मैंने जीयूआई सॉफ्टवेयर मैनेजर को हटाने और फिर से जीसीसी स्थापित करने के लिए उपयोग किया, लेकिन परिणाम समान हैं:

~/code/c/ut: which gcc                                                                                                     
/usr/bin/gcc

~/code/c/ut: gcc -std=c99 -Wall -Wextra -g -c object.c                                                                      
gcc: error trying to exec 'cc1': execvp: No such file or directory

जवाबों:


70

व्याख्या

त्रुटि संदेश ने हमें बताया, कि बिल्ड-टाइम निर्भरता (इस मामले में यह नहीं है cc1) नहीं मिला, इसलिए हम सभी की आवश्यकता है - सिस्टम को उचित पैकेज स्थापित करें (पैकेज प्रबंधक // स्रोतों से // एक और तरीका)

क्या है cc1:

cc1आंतरिक कमांड है जो पूर्व-सी सी-भाषा फ़ाइलों को लेता है और उन्हें असेंबली में रूपांतरित करता है। यह वास्तविक भाग है जो C ++ के लिए C को संकलित करता है, cc1plus है, और विभिन्न भाषाओं के लिए अन्य आंतरिक कमांड हैं।

एलन शत्को द्वारा इस उत्तर से लिया गया

के लिए समाधान: उबंटू / लिनक्स टकसाल

sudo apt-get update
sudo apt-get install --reinstall build-essential

के लिए समाधान: डॉकर-अल्पाइन वातावरण

यदि आप docker-अल्पाइन वातावरण में हैं, तो इसे जोड़कर बिल्ड-बेस पैकेज स्थापित करें Dockerfile:

RUN apk add build-base

पाब्लो कैस्टेलानो द्वारा प्रदान किया गया बेहतर पैकेज नाम । अधिक जानकारी यहाँ

यदि आपको भवन निर्माण के लिए अधिक पैकेजों की आवश्यकता है, तो अल्पाइन-एसडीके पैकेज जोड़ने पर विचार करें :

RUN apk add alpine-sdk

से लिया GitHub

के लिए समाधान: CentOS / फेडोरा

इस उत्तर में CentOS और Fedora Linux के लिए निर्देश हैं

के लिए समाधान: अमेज़न लिनक्स

sudo yum install gcc72-c++

से लिया इस टिप्पणी से CoderChris

आप इसके द्वारा मिस्ड निर्भरता स्थापित करने का भी प्रयास कर सकते हैं ( हालाँकि, यह समस्या को हल नहीं करने के लिए कहा जाता है ):

sudo yum install gcc-c++.noarch

इस उत्तर से लिया गया



63

डेबियन / ubuntu पर मैंने पुनः स्थापित करके इस समस्या को ठीक किया build-essential:

sudo apt-get update
sudo apt-get install --reinstall build-essential

1
´ के लिए लॉग में - बिल्ड-एसेंशियल को पुनः स्थापित करें मेरे ubuntu ने विशेष रूप से कहा "सेटिंग g ++ (4: 6.1.1-1ubuntu2) ... अपडेट-विकल्प: / usr / bin / g ++ का उपयोग / usr / bin प्रदान करने के लिए / c ++ (c ++) ऑटो मोड में "
पैमानंद

यह मुझे डेबियन DigitalOcean.com छोटी बूंद पर तय हुआ। मुझे केवल दिखाया गया दूसरा कमांड चलाना था, लेकिन उसके बाद gcc द्वारा संकलित .cpp फ़ाइल पूरी तरह से।
मूलांक

1
@ एमकिड कुछ भी गलत नहीं है - इसने समस्या को ठीक कर दिया। बस आप यह स्पष्ट करना चाहते थे कि समस्या से संबंधित आपके सुझाव का क्या हिस्सा है। उदाहरण के लिए, यदि आपका उत्तर किसी के लिए काम नहीं करता है तो वे gcc के लिए अपडेट-वैकल्पिक विशिष्ट का उपयोग कर सकते हैं।
पैमानंद

26

ऐसा इसलिए है क्योंकि gccइनपुट के प्रसंस्करण को पूरा करने के लिए कई अन्य निष्पादन योग्य हैं, और cc1शामिल पथ में नहीं है।

शेल प्रकार पर whereis cc1। यदि cc1पाया जाता है, तो बेहतर है कि आगे बढ़ें और डायरेक्टरी में सॉफ्टलिंक बनाएं gcc; अन्यथा, cc1स्थापित नहीं है और आपको संकुल प्रबंधक का उपयोग करके gcc-c ++ स्थापित करना होगा ।


2
उत्तर के लिए धन्यवाद। जिसमें cc1 कुछ भी नहीं देता है। मेरे पास gcc और gcc-4.4, gcc-4-6, libgcc1 सॉफ्टवेयर मैनेजर के अनुसार स्थापित है। मैं अभी g ++ स्थापित करता हूं, लेकिन मुझे अभी भी त्रुटि मिल रही है।
स्कूटर

2
यदि निष्पादन वर्तमान में / usr / स्थानीय / libexec / जीसीसी / <वास्तुकला> / <संकलक> / <compiler_version> / CC1 अन्यथा अस्थायी उपयोग के लिए नेविगेट करने के लिए / usr / bin और से लिंक बनानेln -s cc cc1
perilbrain

मेरे पास / usr / स्थानीय / libexec निर्देशिका नहीं है। / Usr / स्थानीय के तहत कोई "gcc" नहीं मिला है।
स्कूटर

1
GCC / usr / bin के अंतर्गत है और वहाँ आप cc के रूप में अच्छी तरह से, इस निर्देशिका में पिछले टिप्पणी में उल्लिखित कमांड निष्पादित करेंगे।
perilbrain

2
Cc1 / cc1plus बायनेरिज़ $ PATH में नहीं होना चाहिए।
zwol

16

अमेज़ॅन लिनक्स: जीसीसी समस्या को ठीक करना

चूंकि यह Google पर पहले परिणाम के रूप में आता है, मैं सिर्फ अमेज़ॅन लिनक्स के साथ अपने अनुभव का दस्तावेजीकरण करना चाहता था। gcc-c++.noarchसमस्या को स्थापित करना :

sudo yum install gcc-c++.noarch

कुछ लोगों ने इस विकल्प को समाधान के रूप में भी बताया:

sudo yum install gcc72-c++


2
निश्चित रूप से अमेज़ॅन लिनक्स पर मेरी समस्या, लेकिन अफसोस, .noarchपहले से ही स्थापित है।
ragerdl

10
sudo yum install gcc72-c ++ ने इसे मेरे लिए Amazon Linux पर तैयार किया
CoderChris

खुशी है कि किसी ने अमेज़ॅन लिनक्स के बारे में बात की है, लेकिन इनमें से किसी भी समाधान ने मेरे लिए काम नहीं किया ...
जॉन क्रिसस्टॉम

1
"अमेज़ॅन लिनक्स एएमआई 2018.03" पर yum स्थापित gcc72-c ++ जो मुझे भी चाहिए।
निक लॉथियन

1
sudo yum install gcc72-c ++ मेरे लिए काम करता है। बहुत बहुत धन्यवाद
इलियास

13

मैं आज एक ऐसे ही मामले में भाग गया - एक सहकर्मी अपने सॉफ्टवेयर का निर्माण नहीं कर सकता था लेकिन मैं इसका निर्माण कर सकता था। जब वह भागा gccतो नहीं मिला cc1

उनका निष्पादन योग्य मार्ग उचित लग रहा था लेकिन इस तथ्य के कारण कि मैं आसानी से उनके वातावरण में कारण के रूप में सुझाई गई विफलता को दोहरा नहीं सकता था।

आखिरकार हमें GCC_EXEC_PREFIXउसके वातावरण में परिभाषित पाया गया जो अपराधी था और gccजिसकी तलाश में वह भ्रामक था cc1। यह उनकी शेल स्टार्टअप स्क्रिप्ट का हिस्सा था और इसका मतलब एक स्पार्क / सोलारिस प्रणाली पर एक सीमा के आसपास काम करना था जो अब उपयोग में नहीं है। इस वातावरण चर को सेट नहीं करने से समस्या हल हो गई थी।

http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html


ठीक वैसी ही समस्या .. अभी भी अनसुलझी है! यह प्रोजेक्ट को 16.04LTS से 18.04LTS तक पोर्ट करने के बाद हुआ।
15

11

मैंने स्पष्ट रूप से जी ++ स्थापित करके इस समस्या को ठीक किया:

sudo apt-get install g++

पांडा को स्थापित करते समय Ubuntu 12.04 पर समस्या का सामना करना पड़ा। (धन्यवाद perilbrain।)


5

yum install gcc-c++ ठीक किया।


1
मौजूदा उत्तर का डुप्लिकेट (वर्तमान में सबसे अधिक मतदान किया गया, इस एक साल पहले पोस्ट किया गया)। "धन्यवाद" या "मुझे भी" उत्तर केवल अव्यवस्था है।
पीटर कॉर्ड्स

4

सुनिश्चित करें कि आपका GCC_EXEC_PREFIX(env)निर्यात नहीं किया गया है और आपको PATHसही उपकरण श्रृंखला में निर्यात किया गया है।


2

एक चमकदार नया जीसीसी - संस्करण 8.1 - आरएचईएल 7. को संकलित करने और स्थापित करने के तुरंत बाद मैंने इसका अनुभव किया। अंत में, यह एक अनुमति समस्या होने के कारण समाप्त हो गया; मेरा मूल उमर अपराधी था। मैं अंत में cc1छिपा हुआ पाया गया /usr/local/libexec:

[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/x86_64-pc-linux-gnu/8.1.0/ | grep cc1
-rwxr-xr-x 1 root root 196481344 Jul  2 13:53 cc1

हालाँकि, वहां जाने वाली निर्देशिकाओं की अनुमति ने मेरे मानक उपयोगकर्ता खाते की अनुमति नहीं दी:

[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/
total 4
drwxr-x--- 3 root root 4096 Jul  2 13:53 gcc
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/
total 4
drwxr-x--- 3 root root 4096 Jul  2 13:53 x86_64-pc-linux-gnu
[root@nacelle gdb-8.1]# ls -l /usr/local/libexec/gcc/x86_64-pc-linux-gnu/
total 4
drwxr-x--- 4 root root 4096 Jul  2 13:53 8.1.0

chmodविश्व को जोड़ने / त्वरित अनुमतियों को जोड़ने के लिए त्वरित पुनरावर्ती ने इसे ठीक किया:

[root@nacelle 8.1.0]# cd /usr/local/libexec
[root@nacelle lib]# ls -l | grep gcc
drwxr-x---  3 root root     4096 Jul  2 13:53 gcc
[root@nacelle lib]# chmod -R o+rx gcc
[root@nacelle lib]# ls -l | grep gcc
drwxr-xr-x  3 root root     4096 Jul  2 13:53 gcc

और अब gccपा सकते हैं cc1जब मैं इसे कुछ संकलन करने के लिए कहता हूं!


1

यदि आप 64-बिट OS पर 32-बिट gcc बायनेरी और 32-बिट glibc को चलाने का प्रयास करते हैं तो यह भी प्रदर्शित त्रुटि संदेश हो सकता है। इस रीडमी के अनुसार : "64 बिट सिस्टम के लिए, टूल को चलाने के लिए 32 बिट लिबास और लीबनेर्स की आवश्यकता होती है।" इस मामले में पथ के साथ कोई समस्या नहीं है और cc1 वास्तव में पाया जाता है, लेकिन 32 बिट ग्लिबक के रूप में लापता होने की सूचना दी गई है


1

मेरे llvm-gccबजाय इसके इस्तेमाल में क्या मदद मिली :

ln -s $(which llvm-gcc) /usr/local/bin/gcc

1

इस मुद्दे के साथ मेरी परेशानी का दस्तावेजीकरण करने के लिए भले ही यह अन्य उत्तरों का एक विशिष्ट उदाहरण प्रतीत होता हो; एक रिश्तेदार नौसिखिया के रूप में मुझे लगता है कि यह दूसरों की मदद कर सकता है।

उपाय:

मैंने एक सत्र के उपयोग के लिए PATH की शुरुआत में '/ usr / bin' जोड़ा PATH='/usr/path/:$PATH' और सब कुछ ठीक काम करने लगा।

मैंने पाथ को स्थायी रूप से अपडेट करने के लिए gedit का उपयोग किया, यह सुनिश्चित करने के बाद कि यह मेरे नियमित टूलचिन्स को नहीं तोड़ देगा।

स्पष्टीकरण:

मेरे पास Ubuntu 14.04LTS पर कई टूलचाइन्स स्थापित हैं और मैं नियमित रूप से सिर्फ एक जोड़े का उपयोग करता हूं। जब मैंने कमांड लाइन से gcc का उपयोग करने की कोशिश की तो मुझे ओपी द्वारा वर्णित मुद्दा मिला। PATH में '/ usr / bin' है, लेकिन यह अन्य टूलचैन स्थानों के पीछे है। उन अन्य टूलचिन के लिए cc1 को चालू करता है जो gcc के साथ असंगत है।


1

बस अल्पाइन के बारे में @ maxkoryukov के जवाब को पूरक करने के लिए।

build-essentialअल्पाइन में डेबियन के बराबर है build-base। वास्तव में, ऊपर वर्णित alpine-sdkपर निर्भर करता है build-base

/ # apk info -R build-base
build-base-0.5-r1 depends on:
binutils
file
gcc
g++
make
libc-dev
fortify-headers

/ # apk info -R alpine-sdk
alpine-sdk-1.0-r0 depends on:
abuild
build-base
git


0

मैंने फेडोरा 27 की यथोचित ताजा स्थापना पर इस समस्या का अनुभव किया। मैंने अन्य सभी सुझावों या उनके समकक्षों की कोशिश की; विभिन्न पैकेजों को स्थापित करना या तो "पहले से स्थापित" या कुछ नया स्थापित करना है जो मदद नहीं करता है।

के साथ तय किया

# dnf remove gcc
# dnf install gcc gcc-c++

0

वैज्ञानिक लिनक्स 6 पर (CentOS 6-- SL का स्थान अब CentOS, AIUI ने ले लिया है), मुझे उसका उपयोग करना था /usr/sbin/prelink -av -mRजो मुझे उस समय मिल गया था https://stelfox.net/blog/2014/08/dependency-prelink-issues/

जब तक मैंने ऐसा नहीं किया, मुझे cc1 त्रुटि मिली gcc: error trying to exec 'cc1': execvp: No such file or directory जब मैंने संकलन करने की कोशिश की, और gcc --version ने 4.4.7 के बजाय 4.2.2 की सूचना दी, इसके बावजूद कि yum द्वारा रिपोर्ट किया गया था।

यह संबंधित हो सकता है या नहीं भी हो सकता है, लेकिन सिस्टम अंतरिक्ष पर / var से बाहर चला गया था


0

यह इस पैकेज में है (Ubuntu 19.04):

  sudo apt install g++-6

आपको एक पुराना G ++ संस्करण स्थापित करने की आवश्यकता नहीं है; बस g++ठीक है। या बेहतर, build-essentialकुछ लिबास में भी खींचता है।
पीटर कॉर्ड्स

0

मेरे दुर्लभ मामले में यह color wrapperखराब हो गया था gcc। पर्यावरण चर से cwइसकी निर्देशिका को छोड़कर अक्षम किया गया ।/usr/libexec/cwPATH


0

क्यों होता है ऐसा? जब आप लिनक्स की एक नई प्रति स्थापित करते हैं, तो gcc संकलक इसके साथ पहले से पैक होकर आता है। इसमें केवल वे फाइलें और बायनेरिज़ शामिल हैं जिनका उपयोग लिनक्स चलाने के लिए किया जाता है (स्थान और समय बचाने के लिए, जाहिर है)।

इस त्रुटि को कैसे हल करें? आपको केवल पैकेज प्रबंधक के माध्यम से अपने पैकेज को अपडेट करना है और बिल्ड-आवश्यक पैकेजों को पुनर्स्थापित करना है। अलग-अलग गुठली पर आदेश अलग-अलग हो सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.