Неустранимая ошибка 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.
Жюль
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 07
1
Вау. Все еще работает с Xcode 8.0 и Sierra в 2017 году.
user124384
1
Alpine guide чрезвычайно полезен для образов Docker, основанных на дистрибутиве alpine, работает так, как хотелось
VanDavv
какие-нибудь предложения для пользователей Windows? У меня проблема с окнами
Ратул Хасан,
1
Для пользователей macOS, у которых все еще возникают проблемы после установки CLT stackoverflow.com/questions/63342521/…
anki
46

Mac OS Мохаве

Принятый ответ больше не работает. При запуске команды 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 и может не установиться». У меня есть Мохаве.
Стив Сигел
@SteveSiegel, какая у вас версия Mac OS? Я обновился до 10.15.1, и мне больше не приходилось делать это обходное решение. Обновил мой ответ, чтобы отразить это.
Samshel
"обновление до Mojave 10.15.1" неверно. @SteveSiegel Этот pkg устарел. Следует использовать SDKROOT. stackoverflow.com/a/63343829/10063119
anki
23

Пользователи ubuntu:

sudo apt-get install libc6-dev

специально разработчики Ruby, у которых проблемы с установкой gem install json -v '1.8.2'на свои виртуальные машины

эквивалент8
источник
1
Интересно. Спасибо. Эта библиотека также решает некоторые другие проблемы. Недавно я столкнулся с этим при попытке запустить тест для petabyet.com (который использует gcc).
dhaupin
14
На alpine 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

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

Соид
источник