Фатальна помилка GCC: stdio.h: Немає такого файлу чи каталогу


90

Я намагаюся скомпілювати програму на мові C на OS X 10.9 з GCC 4.9 (експериментальна). З якоїсь причини під час компіляції я отримую таку помилку:

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

Потім я спробував просту програму Hello World:

#include <stdio.h>

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

Знову ж таки, після запуску gcc -o ~/hello ~/hello.cя отримав ту ж помилку. Я використовую експериментальну версію gcc, але здається неправдоподібним, що відбудеться випуск, який генерує помилки під час імпорту stdio. Що може спричинити цю проблему та як її можна виправити?


11
Ви можете побачити, де gcc шукає файли заголовків, виконавши echo "#include <bogus.h>" | gcc -v -x c -та вивчивши шляхи пошуку.
Крістіан Терн

1
Дуже корисна команда! Це не схоже stdio.hна жоден із шляхів пошуку GCC.
Jules

2
Mavericks більше не має бази / usr / include. Вам потрібно зв’язати його з XCode OS 10.9 SDK.
Янн Рамін,

3
До речі, int mainпершим параметром є int, а не int * argc.
p0lAris

3
@ user2615799 Це вsudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include
Янн Рамін

Відповіді:


141

Mac OS X

У мене теж була ця проблема (зіткнулася з компіляторами Macports). Попередні версії Xcode дозволяли встановлювати інструменти командного рядка через xcode / Preferences, але xcode5 не надає опції інструментів командного рядка в графічному інтерфейсі, тому я припустив, що він автоматично включений зараз. Спробуйте виконати цю команду:

xcode-select --install

Ubuntu

(відповідно до цієї відповіді )

sudo apt-get install libc6-dev

Alpine Linux

(згідно з цим коментарем )

apk add libc-dev

Якщо ви використовуєте Xcode 6 beta 5, ця команда може не вдатися. У такому випадку вам потрібно це зробити sudo xcode-select -s /Applications/Xcode.app. Коли закінчите, поверніться назад за допомогою sudo xcode-select -s /Applications/Xcode6-Beta5.app.
Sjors Provoost

1
Ого. Все ще працював з Xcode 8.0 та Сьєррою у 2017 році.
user124384

1
Альпійський путівник надзвичайно корисний для зображень Docker, заснованих на альпійському дистрибутиві, працює як хочеться
VanDavv

будь-яка пропозиція для користувачів Windows? У мене проблема з вікнами
Ратул Хасан,

1
Для MacOS користувачів , які все ще виникають проблеми після установки CLTS stackoverflow.com/questions/63342521 / ...
Anki

46

Mac OS Mojave

Прийнята відповідь більше не працює. Під час запуску команди xcode-select --installвін повідомляє вам використовувати «Оновлення програмного забезпечення» для встановлення оновлень.

У цьому посиланні знаходиться оновлений метод:

Відкрийте термінал, а потім:

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

Це відкриє майстер встановлення.

Оновлення 12/2019

Після оновлення до Mojave 10.15.1 здається, що використання xcode-select --installпрацює за призначенням.


Повторна інсталяція заголовків працює також під час оновлення до Xcode 10.2.
Боян

Коли я відкриваю macOS_SDK_headers_for_macOS_10.14.pkg, я отримую страшне попередження від установника: "Цей пакет несумісний з цією версією macOS і може не вдатися встановити." У мене є Мохаве.
Steve Siegel

@SteveSiegel, яку версію Mac OS ви використовуєте? Я перейшов на 10.15.1, і мені більше не потрібно було робити це обхідне рішення. Оновив свою відповідь, щоб відобразити це.
Самшель

"оновлення до Mojave 10.15.1" невірно. @SteveSiegel pkg застарілий. Слід використовувати SDKROOT. stackoverflow.com/a/63343829/10063119
Анки

23

Користувачі ubuntu:

sudo apt-get install libc6-dev

спеціально розробники ruby, які мають проблеми з установкою gem install json -v '1.8.2'на свої віртуальні машини


1
Цікаво. Дякую. Ця бібліотека також вирішує деякі інші проблеми. Нещодавно я зіткнувся з цим, намагаючись запустити орієнтир для petabyet.com (який використовує gcc).
dhaupin

14
На альпійському Linux мені було потрібноapk add libc-dev
Шаді

3

У мене була та сама проблема. Я встановив "XCode: засоби розробки" з магазину програм, і це вирішило проблему для мене.

Думаю, це посилання допоможе: https://itunes.apple.com/us/app/xcode/id497799835?mt=12&ls=1

Заслуга Янна Раміна за його поради. Я думаю, що є краще рішення із посиланнями, але це було легко та швидко.

Удачі!


Ви маєте на увазі просто звичайний Xcode? Або існує якась спеціальна версія, яка називається "XCode: засоби розробки"? Тому що я бачу лише звичайний Xcode в App Store. Звичайно, це 4 роки в майбутньому, коли ця відповідь була розміщена.
user124384

1

Я знаю, що мій випадок трапляється рідко, але я все одно додам його сюди для тих, хто пізніше усуває його. У мене в модулі Makefile був цільовий модуль ядра Linux, і я спробував скомпілювати мою програму простору користувача разом із модулем ядра, який не має stdio. Виділення окремої цілі вирішило проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.