Saya telah berhasil menggunakan gcc di Linux Mint 12. Sekarang saya mendapatkan pesan kesalahan. Saya baru-baru ini melakukan beberapa .so membangun dan menginstal Clang belum lama ini, tetapi telah berhasil mengkompilasi sejak kedua peristiwa tersebut, jadi tidak yakin apa yang berubah. Saya menggunakan GUI Software Manager untuk menghapus dan menginstal gcc lagi, tetapi hasilnya sama:
~/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
Jawaban:
Penjelasan
Pesan kesalahan memberi tahu kami, bahwa ketergantungan waktu-build (dalam hal ini adalah
cc1
) tidak ditemukan, jadi yang kami butuhkan - instal paket yang sesuai ke sistem (menggunakan manajer paket // dari sumber // dengan cara lain)Apa itu
cc1
:diambil dari jawaban ini oleh Alan Shutko .
Solusi untuk: Ubuntu / Linux Mint
Solusi untuk: Lingkungan Docker-alpine
Jika Anda berada di lingkungan docker-alpine, instal paket build-base dengan menambahkan ini ke
Dockerfile
:Nama paket yang lebih baik disediakan oleh Pablo Castellano . Lebih lengkapnya di sini .
Jika Anda membutuhkan lebih banyak paket untuk tujuan pembangunan, pertimbangkan untuk menambahkan paket alpine-sdk :
Diambil dari github
Solusi untuk: CentOS / Fedora
Jawaban ini berisi instruksi untuk CentOS dan Fedora Linux
Solusi untuk: Amazon Linux
Diambil dari komentar ini oleh CoderChris
Anda juga dapat mencoba menginstal dependensi yang terlewat oleh ini ( meskipun, dikatakan tidak menyelesaikan masalah ):
Diambil dari jawaban ini
sumber
Di CentOS atau Fedora
sumber
Di debian / ubuntu saya memperbaiki masalah ini dengan menginstal ulang
build-essential
:sumber
Ini karena
gcc
memanggil banyak file yang dapat dieksekusi lainnya untuk menyelesaikan pemrosesan input, dancc1
tidak ada dalam jalur yang disertakan.Pada tipe shell
whereis cc1
. Jikacc1
ditemukan, lebih baik lanjutkan dan buat softlink di direktorigcc
; jika tidak,cc1
tidak diinstal dan Anda harus menginstal gcc-c ++ menggunakan pengelola paket.sumber
ln -s cc cc1
Karena ini muncul sebagai hasil pertama di Google, saya hanya ingin mendokumentasikan pengalaman saya dengan Amazon Linux. Memasang
gcc-c++.noarch
memperbaiki masalah:sudo yum install gcc-c++.noarch
Beberapa orang juga melaporkan alternatif ini sebagai solusi:
sudo yum install gcc72-c++
sumber
.noarch
sudah terinstal.Saya mengalami masalah serupa hari ini - rekan kerja tidak dapat membuat perangkat lunaknya tetapi saya dapat membuatnya. Ketika dia berlari
gcc
tidak dapat menemukannyacc1
.Jalannya yang dapat dieksekusi tampak masuk akal tetapi fakta bahwa saya tidak dapat dengan mudah meniru kegagalan tersebut menunjukkan sesuatu di lingkungannya sebagai penyebabnya.
Akhirnya kami menemukan
GCC_EXEC_PREFIX
definisi di lingkungannya yang merupakan pelakunya dan menyesatkangcc
dalam pencariancc1
. Ini adalah bagian dari skrip startup shell-nya dan dimaksudkan untuk mengatasi batasan pada sistem SPARC / Solaris yang tidak lagi digunakan. Masalah diatasi dengan tidak menyetel variabel lingkungan ini.http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
sumber
Saya memperbaiki masalah ini dengan menginstal g ++ secara eksplisit:
Masalah ditemukan di Ubuntu 12.04 saat menginstal panda. (Terima kasih perilbrain.)
sumber
yum install gcc-c++
melakukan perbaikan.sumber
Pastikan Anda
GCC_EXEC_PREFIX(env)
tidak diekspor dan AndaPATH
diekspor ke rantai alat yang benar.sumber
Saya mengalami ini segera setelah mengkompilasi dan menginstal GCC baru yang mengkilap - versi 8.1 - di RHEL 7. Pada akhirnya, ini berakhir menjadi masalah perizinan; akar umask saya adalah pelakunya. Saya akhirnya menemukan
cc1
persembunyian di/usr/local/libexec
:Namun, izin pada direktori yang mengarah ke sana tidak mengizinkan akun pengguna standar saya:
Rekursif cepat
chmod
untuk menambahkan izin baca / eksekusi dunia memperbaikinya:Dan sekarang
gcc
dapat menemukancc1
ketika saya memintanya untuk mengkompilasi sesuatu!sumber
Ini mungkin juga merupakan pesan kesalahan yang ditampilkan jika Anda mencoba menjalankan biner gcc 32-bit pada OS 64-bit dan kehilangan glibc 32-bit. Menurut readme ini : "Untuk sistem 64 bit, 32 bit libc dan libncurses diperlukan untuk menjalankan alat.". Dalam hal ini tidak ada masalah dengan jalur dan cc1 sebenarnya ditemukan, tetapi dilaporkan hilang sebagai tidak ada glibc 32 bit.
sumber
Yang membantu saya adalah menggunakan
llvm-gcc
:sumber
Hanya untuk mendokumentasikan masalah saya dengan masalah ini meskipun tampaknya hanya menjadi contoh spesifik dari jawaban lain; sebagai seorang pemula yang relatif, saya merasa ini dapat membantu orang lain.
Larutan:
Saya menambahkan '/ usr / bin' ke awal PATH untuk satu sesi menggunakan
PATH='/usr/path/:$PATH'
dan semuanya mulai berfungsi dengan baik.Saya menggunakan gedit untuk memperbarui PATH secara permanen, setelah memastikan itu tidak akan merusak rantai alat biasa saya.
Penjelasan:
Saya memiliki beberapa rantai alat yang diinstal di Ubuntu 14.04LTS dan saya hanya menggunakan beberapa secara teratur. Ketika saya mencoba menggunakan gcc dari baris perintah, saya mendapat masalah yang dijelaskan oleh OP. '/ usr / bin' ada di PATH tetapi berada di belakang lokasi toolchain lainnya. Ternyata cc1 untuk rantai alat lain tersebut tidak kompatibel dengan gcc.
sumber
Sekadar melengkapi jawaban @ maxkoryukov tentang Alpine.
Setara dengan Debian
build-essential
di Alpine adalahbuild-base
. Faktanya, hal tersebut di atasalpine-sdk
tergantungbuild-base
.sumber
Anda dapat memperbaikinya dengan menjalankan ini: Di Fedora:
sumber
Saya mengalami masalah ini pada penginstalan Fedora 27 yang cukup baru. Saya mencoba semua saran lain atau yang setara; menginstal berbagai paket baik mengatakan "sudah diinstal" atau menginstal sesuatu yang baru yang tidak membantu.
Diperbaiki dengan
sumber
Pada Scientific Linux 6 (mirip dengan CentOS 6-- SL sekarang digantikan oleh CentOS, AIUI), saya harus menggunakan
/usr/sbin/prelink -av -mR
yang saya temukan disarankan di https://stelfox.net/blog/2014/08/dependency-prelink-issues/Sampai saya melakukan itu, saya mendapat kesalahan cc1
gcc: error trying to exec 'cc1': execvp: No such file or directory
ketika saya mencoba mengkompilasi, dan gcc --version melaporkan 4.2.2, bukan 4.4.7, meskipun versi itu dilaporkan oleh yum.Ini mungkin terkait atau tidak, tetapi sistem telah kehabisan ruang di / var
sumber
Ada dalam paket ini (Ubuntu 19.04):
sumber
g++
baik-baik saja. Atau lebih baik,build-essential
menarik beberapa libs juga.Dalam kasus langka saya itu
color wrapper
yang manjagcc
. Dipecahkan dengan menonaktifkancw
tidak termasuk direktori/usr/libexec/cw
dariPATH
variabel lingkungan.sumber
Mengapa ini terjadi? Saat Anda menginstal salinan baru linux, gcc compiler sudah dikemas sebelumnya. Ini hanya berisi file dan binari yang digunakan untuk menjalankan linux (untuk menghemat ruang dan waktu, tentunya).
Bagaimana cara mengatasi kesalahan ini? Yang Anda butuhkan hanyalah memperbarui paket Anda melalui manajer paket dan menginstal ulang paket penting build. Perintahnya mungkin berbeda pada kernel yang berbeda.
sumber