Kesalahan fatal GCC: stdio.h: File atau direktori tidak ada

90

Saya mencoba untuk mengkompilasi program di C pada OS X 10.9 dengan GCC 4.9 (percobaan). Untuk beberapa alasan, saya mendapatkan error berikut pada waktu kompilasi:

gcc: fatal error: stdio.h: No such file or directory

Saya kemudian mencoba program Hello World sederhana:

#include <stdio.h>

int main(int argc, const char *argv[])
{
    printf("Hello, world!");
    return 0;
}

Sekali lagi, saat berlari gcc -o ~/hello ~/hello.c, saya mendapat kesalahan yang sama. Saya menggunakan versi eksperimental gcc, tetapi tampaknya tidak masuk akal bahwa akan ada rilis yang menghasilkan kesalahan saat mengimpor stdio. Apa yang dapat menyebabkan masalah ini, dan bagaimana cara memperbaikinya?

Jules
sumber
11
Anda dapat melihat di mana gcc mencari file header dengan melakukan echo "#include <bogus.h>" | gcc -v -x c -dan memeriksa jalur pencarian.
Christian Ternus
1
Perintah yang sangat berguna! Sepertinya tidak stdio.hada di jalur penelusuran GCC mana pun.
Jules
2
Mavericks tidak lagi memiliki basis / usr / include. Anda harus menautkannya dari SDK XCode OS 10.9.
Yann Ramin
3
BTW, int mainparameter pertama adalah int dan bukan int * argc.
p0lAris
3
@ user2615799 Disudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Yann Ramin

Jawaban:

141

Mac OS X

Saya mengalami masalah ini juga (ditemui melalui kompiler Macports). Versi Xcode sebelumnya akan memungkinkan Anda menginstal alat baris perintah melalui xcode / Preferensi, tetapi xcode5 tidak memberikan opsi alat baris perintah di GUI, jadi saya berasumsi itu otomatis disertakan sekarang. Coba jalankan perintah ini:

xcode-select --install

Ubuntu

(sesuai jawaban ini )

sudo apt-get install libc6-dev

Alpine Linux

(sesuai komentar ini )

apk add libc-dev
amos
sumber
Jika Anda menggunakan Xcode 6 beta 5, perintah ini mungkin gagal. Dalam hal ini yang perlu Anda lakukan sudo xcode-select -s /Applications/Xcode.app. Setelah selesai, alihkan kembali menggunakan sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost
1
Wow. Masih bekerja dengan Xcode 8.0 dan Sierra pada 2017.
pengguna124384
1
Panduan Alpine sangat berguna untuk gambar Docker berdasarkan distro alpine, berfungsi sesuai keinginan
VanDavv
ada saran untuk pengguna windows? Saya mengalami masalah ini di windows
Ratul Hasan
1
Untuk pengguna macOS yang masih mengalami masalah setelah menginstal CLT stackoverflow.com/questions/63342521/…
anki
46

Mac OS Mojave

Jawaban yang diterima tidak lagi berfungsi. Saat menjalankan perintah xcode-select --install, Anda diminta menggunakan "Pembaruan Perangkat Lunak" untuk menginstal pembaruan.

Di tautan ini adalah metode yang diperbarui:

Buka Terminal dan kemudian:

cd /Library/Developer/CommandLineTools/Packages/
open macOS_SDK_headers_for_macOS_10.14.pkg

Ini akan membuka Wizard penginstalan.

Perbarui 12/2019

Setelah memperbarui ke Mojave 10.15.1 tampaknya menggunakan xcode-select --installberfungsi sebagaimana mestinya.

Samshel
sumber
Menginstal ulang header juga berfungsi saat meningkatkan ke Xcode 10.2.
Bojan Dimovski
Saat saya membuka macOS_SDK_headers_for_macOS_10.14.pkg, saya mendapatkan Peringatan menakutkan dari Installer: "Paket ini tidak kompatibel dengan versi macOS ini dan mungkin gagal diinstal." Saya memiliki Mojave.
Steve Siegel
@SteveSiegel versi Mac OS apa yang Anda jalankan? Saya meningkatkan ke 10.15.1 dan saya tidak lagi harus melakukan pemecahan masalah ini. Memperbarui jawaban saya untuk mencerminkan itu.
Samshel
"memperbarui ke Mojave 10.15.1" itu salah. @SteveSegel Pkg sudah usang. SDKROOT harus digunakan. stackoverflow.com/a/63343829/10063119
anki
23

pengguna ubuntu:

sudo apt-get install libc6-dev

khusus pengembang ruby ​​yang mengalami masalah saat menginstal gem install json -v '1.8.2'pada VM mereka

setara8
sumber
1
Menarik. Terima kasih. Lib ini juga menyelesaikan beberapa masalah lain. Baru-baru ini, saya menemukannya saat mencoba menjalankan benchmark untuk petabyet.com (yang menggunakan gcc).
dhaupin
14
Di alpine linux saya perluapk add libc-dev
shadi
3

Saya memiliki masalah yang sama. Saya menginstal "XCode: alat pengembangan" dari toko aplikasi dan memperbaiki masalah untuk saya.

Saya pikir tautan ini akan membantu: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Penghargaan untuk Yann Ramin atas nasihatnya. Saya pikir ada solusi yang lebih baik dengan tautan, tetapi ini mudah dan cepat.

Semoga berhasil!

nevieandphil.dll
sumber
Apakah yang Anda maksud hanyalah Xcode biasa? Atau apakah ada versi khusus yang disebut "XCode: alat pengembangan"? Karena saya hanya melihat Xcode normal di App Store. Memang, ini adalah 4 tahun ke depan sejak jawaban ini diposting.
pengguna124384
1

Saya tahu kasus saya jarang terjadi, tetapi saya masih akan menambahkannya di sini untuk seseorang yang memecahkan masalahnya nanti. Saya memiliki target modul Kernel Linux di Makefile saya dan saya mencoba untuk mengkompilasi program ruang pengguna saya bersama dengan modul kernel yang tidak memiliki stdio. Membuatnya menjadi target terpisah memecahkan masalah.

Soid
sumber