GCC önemli hatası: stdio.h: Böyle bir dosya veya dizin yok


92

OS X 10.9'da GCC 4.9 (deneysel) ile C'de bir program derlemeye çalışıyorum. Bazı nedenlerden dolayı, derleme sırasında aşağıdaki hatayı alıyorum:

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

Daha sonra basit bir Merhaba Dünya programını denedim:

Yine koşarken gcc -o ~/hello ~/hello.caynı hatayı aldım. Uygulamasının deneysel bir sürümünü kullanıyorum gcc, ancak içe aktarmada hatalar oluşturan bir sürüm olması mantıksız görünüyor stdio. Bu soruna ne neden olabilir ve nasıl düzeltilebilir?


11
echo "#include <bogus.h>" | gcc -v -x c -Arama yollarını yaparak ve inceleyerek gcc'nin başlık dosyalarını nerede aradığını görebilirsiniz .
Christian Ternus

1
Çok kullanışlı komut! stdio.hGCC'nin arama yollarından hiçbirinde olduğu gibi görünmüyor .
Jules

2
Mavericks artık bir / usr / include tabanına sahip değil. XCode OS 10.9 SDK'dan yerine bağlamanız gerekir.
Yann Ramin

3
BTW'nin int mainilk parametresi bir int'dir ve int * argc değildir.
p0lAris

3
@ user2615799 Onun atsudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Yann Ramin

Yanıtlar:


143

Mac OS X

Ben de bu sorunu yaşadım (Macports derleyicileri aracılığıyla karşılaştım). Xcode'un önceki sürümleri, komut satırı araçlarını xcode / Preferences aracılığıyla yüklemenize izin verirdi, ancak xcode5, GUI'de bir komut satırı araçları seçeneği sunmaz, bu yüzden şimdi otomatik olarak dahil edildiğini varsaydım. Bu komutu çalıştırmayı deneyin:

Ubuntu

(bu cevaba göre )

Alp Linux

(bu yoruma göre )


Xcode 6 beta 5 kullanıyorsanız bu komut başarısız olabilir. Bu durumda yapmanız gerekir sudo xcode-select -s /Applications/Xcode.app. İşiniz bittiğinde ile geri dönün sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost

1
Vay. 2017'de hala Xcode 8.0 ve Sierra ile çalışmaktadır.
user124384

1
Alpine kılavuzu, Alp dağıtımına dayalı Docker görüntüleri için son derece kullanışlıdır, istendiği gibi çalışır
VanDavv

Windows kullanıcıları için herhangi bir öneri? Windows'ta bu sorunu yaşıyorum
Ratul Hasan


46

Mac OS Mojave

Kabul edilen cevap artık işe yaramıyor. Komutu çalıştırırken, xcode-select --installgüncellemeleri yüklemek için "Yazılım Güncelleme" yi kullanmanızı söyler.

Bu bağlantıda güncellenmiş yöntem:

Bir Terminal açın ve ardından:

Bu bir kurulum Sihirbazı açacaktır.

12/2019 Güncellemesi

Mojave 10.15.1'e güncelledikten sonra xcode-select --install, amaçlandığı gibi çalışıyor gibi görünüyor .


Başlıkların yeniden yüklenmesi, Xcode 10.2'ye yükseltme sırasında da çalışır.
Bojan Dimovski

MacOS_SDK_headers_for_macOS_10.14.pkg'yi açtığımda, Yükleyiciden korkutucu bir Uyarı alıyorum: "Bu paket, macOS'un bu sürümüyle uyumsuz ve yüklenemeyebilir." Mojave var.
Steve Siegel

@SteveSiegel hangi Mac OS sürümünü çalıştırıyorsunuz? 10.15.1'e yükselttim ve artık bu geçici çözümü yapmak zorunda kalmadım. Cevabımı bunu yansıtacak şekilde güncelledim.
Samshel

"Mojave 10.15.1'e güncelleme" yanlıştır. @SteveSiegel Paket kullanımdan kaldırıldı. SDKROOT kullanılmalıdır. stackoverflow.com/a/63343829/10063119

23

ubuntu kullanıcıları:

sudo apt-get install libc6-dev

gem install json -v '1.8.2'VM'lerine yükleme konusunda sorun yaşayan özel ruby ​​geliştiricileri


1
İlginç. Teşekkürler. Bu kitaplık aynı zamanda diğer bazı sorunları da çözer. Son zamanlarda, petabyet.com (gcc kullanan) için bir kıyaslama yapmaya çalışırken karşılaştım.
dhaupin

14
Alp Linux'ta ihtiyacım vardıapk add libc-dev
shadi

3

Ben de aynı sorunu yaşadım. Uygulama mağazasından "XCode: geliştirme araçları" yükledim ve benim için sorunu çözdü.

Bu bağlantının yardımcı olacağını düşünüyorum: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Yann Ramin'e tavsiyesi için teşekkür edin. Bence bağlantılarla daha iyi bir çözüm var, ancak bu kolay ve hızlıydı.

İyi şanslar!


Sadece normal Xcode'dan mı bahsediyorsunuz? Veya "XCode: geliştirme araçları" adlı özel bir sürüm var mı? Çünkü App Store'da yalnızca normal Xcode görüyorum. Verildi, bu yanıtın gönderildiği tarihten itibaren 4 yıl sonra.
user124384

1

Durumumun nadir olduğunu biliyorum, ancak daha sonra sorun gideren biri için yine de buraya ekleyeceğim. Makefile dosyamda bir Linux Çekirdeği modülü hedefim vardı ve kullanıcı alanı programımı stdio içermeyen çekirdek modülüyle birlikte derlemeye çalıştım. Onu ayrı bir hedef haline getirmek sorunu çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.