Lỗi nghiêm trọng GCC: stdio.h: Không có tệp hoặc thư mục nào như vậy


90

Tôi đang cố gắng biên dịch một chương trình bằng C trên OS X 10.9 với GCC 4.9 (thử nghiệm). Vì một số lý do, tôi gặp lỗi sau tại thời điểm biên dịch:

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

Sau đó, tôi đã thử một chương trình Hello World đơn giản:

#include <stdio.h>

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

Một lần nữa, khi chạy gcc -o ~/hello ~/hello.c, tôi gặp lỗi tương tự. Tôi đang sử dụng phiên bản thử nghiệm của gcc, nhưng có vẻ như không thể tin được rằng sẽ có một bản phát hành tạo ra lỗi khi nhập stdio. Điều gì có thể gây ra sự cố này và cách khắc phục sự cố này?


11
Bạn có thể thấy nơi gcc đang tìm kiếm các tệp tiêu đề bằng cách thực hiện echo "#include <bogus.h>" | gcc -v -x c -và kiểm tra các đường dẫn tìm kiếm.
Christian Ternus

1
Lệnh rất hữu ích! Nó không giống như stdio.htrong bất kỳ đường dẫn tìm kiếm nào của GCC.
Jules

2
Mavericks không còn cơ sở / usr / include nữa. Bạn cần liên kết nó vào vị trí từ SDK XCode OS 10.9.
Yann Ramin

3
BTW, int maintham số đầu tiên của là một int chứ không phải int * argc.
p0lAris

3
@ user2615799 của nó ởsudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Yann Ramin

Câu trả lời:


141

Mac OS X

Tôi cũng gặp sự cố này (gặp phải thông qua trình biên dịch Macports). Các phiên bản trước của Xcode sẽ cho phép bạn cài đặt các công cụ dòng lệnh thông qua xcode / Preferences, nhưng xcode5 không cung cấp tùy chọn công cụ dòng lệnh trong GUI, vì vậy tôi cho rằng nó đã được tự động đưa vào ngay bây giờ. Hãy thử chạy lệnh này:

xcode-select --install

Ubuntu

(theo câu trả lời này )

sudo apt-get install libc6-dev

Alpine Linux

(theo nhận xét này )

apk add libc-dev

Nếu bạn đang sử dụng Xcode 6 beta 5, lệnh này có thể không thành công. Trong trường hợp đó bạn cần phải làm gì sudo xcode-select -s /Applications/Xcode.app. Khi bạn hoàn tất, hãy quay lại sử dụng sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost

1
Chà. Vẫn hoạt động với Xcode 8.0 và Sierra vào năm 2017.
user124384

1
Alpine dẫn là vô cùng hữu ích cho hình ảnh Docker dựa trên distro trên núi cao, hoạt động như mong muốn
VanDavv

bất kỳ gợi ý nào cho người dùng windows? Tôi đang gặp sự cố này trên windows
Ratul Hasan

1
Đối với người dùng macOS vẫn gặp sự cố sau khi cài đặt CLT stackoverflow.com/questions/63342521/…
anki

46

Mac OS Mojave

Câu trả lời được chấp nhận không còn hoạt động. Khi chạy lệnh, xcode-select --installnó cho bạn biết sử dụng "Cập nhật phần mềm" để cài đặt các bản cập nhật.

Trong liên kết này là phương pháp được cập nhật:

Mở một Terminal và sau đó:

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

Thao tác này sẽ mở Trình hướng dẫn cài đặt.

Cập nhật 12/2019

Sau khi cập nhật lên Mojave 10.15.1, có vẻ như việc sử dụng xcode-select --installhoạt động như dự định.


Việc cài đặt lại tiêu đề cũng hoạt động khi nâng cấp lên Xcode 10.2.
Bojan Dimovski

Khi tôi mở macOS_SDK_headers_for_macOS_10.14.pkg, tôi nhận được Cảnh báo đáng sợ từ Trình cài đặt: "Gói này không tương thích với phiên bản macOS này và có thể không cài đặt được." Tôi có Mojave.
Steve Siegel

@SteveSiegel bạn đang chạy phiên bản Mac OS nào? Tôi đã nâng cấp lên 10.15.1 và tôi không còn phải thực hiện cách giải quyết này nữa. Đã cập nhật câu trả lời của tôi để phản ánh điều đó.
Samshel

"đang cập nhật lên Mojave 10.15.1" không chính xác. @SteveSiegel pkg không được dùng nữa. SDKROOT nên được sử dụng. stackoverflow.com/a/63343829/10063119
anki

23

người dùng ubuntu:

sudo apt-get install libc6-dev

các nhà phát triển ruby ​​đặc biệt gặp sự cố khi cài đặt gem install json -v '1.8.2'trên máy ảo của họ


1
Hấp dẫn. Cảm ơn. Lib này cũng giải quyết một số vấn đề khác. Gần đây, tôi đã gặp phải nó khi cố gắng chạy điểm chuẩn cho petabyet.com (sử dụng gcc).
dhaupin

14
Trên linux núi cao tôi cầnapk add libc-dev
shadi

3

Tôi đã từng gặp vấn đề tương tự. Tôi đã cài đặt "XCode: phát triển công cụ" từ cửa hàng ứng dụng và nó đã khắc phục sự cố cho tôi.

Tôi nghĩ liên kết này sẽ hữu ích: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Tín dụng cho Yann Ramin cho lời khuyên của anh ấy. Tôi nghĩ rằng có một giải pháp tốt hơn với các liên kết, nhưng điều này rất dễ dàng và nhanh chóng.

Chúc may mắn!


Bạn đang đề cập đến chỉ Xcode bình thường? Hoặc có một số phiên bản đặc biệt được gọi là "XCode: công cụ phát triển"? Vì tôi chỉ thấy Xcode bình thường trong App Store. Đúng vậy, đây là 4 năm trong tương lai kể từ khi câu trả lời này được đăng.
user124384

1

Tôi biết trường hợp của mình là rất hiếm, nhưng tôi sẽ vẫn thêm nó ở đây để người nào đó khắc phục sự cố sau. Tôi có mục tiêu mô-đun Kernel Linux trong Makefile của mình và tôi đã cố gắng biên dịch chương trình không gian người dùng của mình cùng với mô-đun hạt nhân không có stdio. Biến nó thành một mục tiêu riêng đã giải quyết được vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.