Я использовал команду gcc на терминале для компиляции программ на Си, но внезапно, после обновления ОС моего Mac (до macOS 10.14 Mojave и XCode 10.0), я начал получать сообщение:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
Я уже установил gcc, так как я могу найти его, /usr/local/bin
и там действительно есть gcc. Я попытался запустить тот же файл на моем другом iMac, и он работал без проблем.
Я попытался запустить, xcode-select --install
и он уже был установлен, следовательно, это не решило проблему, которую я имею сейчас. Я предполагаю, что путь испорчен, так как не похоже, что его можно найти gcc
после того, как я начал копировать и вставлять некоторые команды из других ресурсов для решения этой проблемы.
Хотелось бы помочь с этим.
echo "#include <a.h>" | gcc -v -x c -
xocde-select --install
это правильное решение. Какие o / s вы обновили до? Мохаве 10,14? Какой XCode у вас установлен? 10.0 или другая версия?open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
в командной строке) у меня/usr/include
снова, и мой GCC 8.2.0 снова работает. Спасибо за указатель; молодец, найдя его. Я предлагаю вам написать ответ, так как, вероятно, другие люди столкнутся с проблемой.Ответы:
TL; DR
Убедитесь, что вы загрузили последний пакет «Инструменты командной строки» и запустили его из терминала (командной строки):
Некоторые сведения о Catalina см. В разделе « Не удается скомпилировать программу C на Mac» после обновления до Catalina 10.15 .
Извлечение полусвязного ответа из довольно обширных комментариев ...
преамбула
Очень часто
xcode-select --install
было правильное решение, но, похоже, на этот раз оно не помогло. Вы пытались запустить основной интерфейс Xcode GUI? Это может установить дополнительное программное обеспечение для вас и очистить. Я сделал это после установки Xcode 10.0, но неделю или больше назад, задолго до обновления до Mojave.Я заметил, что если ваш GCC установлен
/usr/local/bin
, вы, вероятно, не используете GCC из XCode; это обычно устанавливается в/usr/bin
.Я тоже обновился до MacOS 10.14 Mojave и Xcode 10.0. Тем не менее, и система,
/usr/bin/gcc
и система/usr/bin/clang
работают на меня (Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
на обоих). У меня проблема с тем, что мой домашний GCC 8.2.0 не находит заголовки/usr/include
, что параллельно с вашей проблемой с/usr/local/bin/gcc
поиском заголовков.Я провел небольшое сравнение, и моя машина Mojave вообще не имеет его, но
/usr/include
все же/usr/bin/clang
умеет компилировать. Заголовок (_stdio.h
с начальным подчеркиванием) был в моем старом/usr/include
; сейчас его нет (отсюда моя проблема с GCC 8.2.0). Я запустилxcode-select --install
и сказал «xcode-select: note: install requested for command line developer tools
», а затем запустил установщик графического интерфейса, который показал мне лицензию, на которую я согласился, и он загрузил и установил инструменты командной строки - или так утверждал.Затем я запустил Xcode GUI (командное пространство, Xcode, return) и сказал, что нужно установить еще немного программного обеспечения, но все же нет
/usr/include
. Но я могу скомпилировать с/usr/bin/clang
и/usr/bin/gcc
- и-v
вариант предполагает, что они используютРабочий раствор
Тогда Maxxx отметил :
Если ничего не помогает, прочтите руководство или, в этом случае, примечания к выпуску. Я не ужасно удивлен тем, что Apple хочет отвернуться от своего наследия Unix, но я разочарован. Если они будут осторожны, они могут прогнать меня. Спасибо за информацию.
Установив пакет с помощью следующей команды в командной строке, я
/usr/include
снова установил , и мой GCC 8.2.0 снова работает.Загрузка инструментов командной строки
Как отмечает Весал в ценном комментарии , вам нужно скачать пакет инструментов командной строки для Xcode 10.1 в Mojave 10.14, и вы можете сделать это из:
Вы должны войти в систему с Apple ID, чтобы получить возможность загрузки. Когда вы закончите загрузку, установите пакет инструментов командной строки. Затем установите заголовки, как описано в разделе «Рабочее решение».
Это работало для меня на Мохаве 10.14.1. Должно быть, я скачал это раньше, но я уже забыл, когда отвечал на этот вопрос.
Обновление до Мохаве 10.14.4 и Xcode 10.2
Около 2019-05-17, я обновил до Mojave 10.14.4, и инструменты командной строки Xcode 10.2 также были обновлены (или инструменты командной строки Xcode 10.1 были обновлены до 10.2).
open
Команда показано выше фиксированной недостающих заголовков. Могут все еще быть приключения с обновлением основного Xcode до 10.2 и затем переустановкой инструментов командной строки и пакета заголовков.Обновление до Xcode 10.3 (для Мохаве 10.14.6)
В 2019-07-22 я получил уведомление через App Store, что доступно обновление до Xcode 10.3 и что оно включает SDK для iOS 12.4, tvOS 12.4, watchOS 5.3 и macOS Mojave 10.14.6. Я установил его на один из своих компьютеров 10.14.5, запустил его и установил дополнительные компоненты, как было предложено, и он, похоже, остался
/usr/include
без изменений.Позже в тот же день я обнаружил, что MacOS Mojave 10.14.6 также был доступен (Системные настройки Update Обновление программного обеспечения) вместе с пакетом утилит командной строки IIRC (он был загружен и установлен автоматически). Установка обновления o / s снова уничтожила его
/usr/include
, ноopen
команда в верхней части ответа снова восстановила его. Дата, которую я имел в файле дляopen
команды, была 2019-07-15.Обновление до XCode 11.0 (для Catalina 10.15)
Обновление до XCode 11.0 («включает в себя Swift 5.1 и SDK для iOS 13, tvOS 13, watchOS 6 и macOS Catalina 10.15») было выпущено 2019-09-21. Я был уведомлен о «доступных обновлениях», скачал и установил его на компьютеры с MacOS Mojave 10.14.6 через приложение App Store (вкладка «Обновления») без проблем и без необходимости работать
/usr/include
. Сразу после установки (перед запуском самого приложения) я попробовал перекомпиляцию и мне сказали:Запуск этого (
sudo xcodebuild -license
) позволил мне запустить компилятор. С тех пор я запустил приложение для установки дополнительных компонентов, в которых оно нуждается; до сих пор нет проблем. Еще неизвестно, что произойдет, когда я обновлюсь до самой Catalina - но мои машины MacOS Mojave 10.14.6 в настоящее время исправны (2019-09-24).источник
/usr/include
, и пакет, указанный в ответе выше, отсутствует,/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
иxcode-select --install
говорит, что инструменты командной строки в настоящее время недоступны.fatal error: bits/ctype_base.h: No such file or directory: #include <bits/ctype_base.h>
при компиляции GCC 7.4.0 с использованием libstdc ++ для Mojave для меняПерепробовав каждый ответ, который я смог найти здесь и в Интернете, я все еще получал ошибки для некоторых пропущенных заголовков. Когда я пытался скомпилировать pyRFR, я получал ошибки о
stdexcept
том, что не найден, который, очевидно, не был установлен/usr/include
с другими заголовками. Тем не менее, я нашел, где он прячется в Мохаве, и добавил это в конец моего~/.bash_profile
файла:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Сделав это, я теперь могу скомпилировать pyRFR и другие программы на C / C ++. В соответствии с
echo | gcc -E -Wp,-v -
gcc искал в этих заголовках прежнее местоположение (без/c++/v1
), но не новое, поэтому добавление этого в CFLAGS исправило это.источник
Когда ты
Mojave 10.14.6
/usr/include
был удален сноваThe file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.
иxcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Затем, что помогло мне восстановить упомянутый пакет, было удаление всей
CommandLineTools
папки(sudo) rm -rf /Library/Developer/CommandLineTools
и ее переустановкаxcode-select --install
.источник
macOS_SDK_headers_for_macOS_10.14.pkg
получить доступ, и командаopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
сделала то, что должен был сделать. Бесконечно благодарен!!export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
Проблема в том, что Xcode, особенно Xcode 10.x, не установил все, поэтому убедитесь, что инструменты командной строки установлены, введите его в оболочке терминала:
также запустите Xcode и убедитесь, что установлена вся необходимая установка (вы должны получить запрос, если это не так.) и поскольку Xcode 10 не устанавливает полный Mac OS SDK, запустите установщик по адресу
поскольку этот пакет не установлен Xcode 10.
источник
Я нашел отличное решение и объяснение в этом комментарии GitHub . Хитрость:
Сделал работу.
источник
ПРИМЕЧАНИЕ. Следующее, скорее всего, в значительной степени зависит от контекста и ограничено по времени до переключения / общей доступности Macos Catalina 10.15. Новый ноутбук. Я пишу это 1 октября 2019 года.
Я считаю, что именно эти конкретные обстоятельства и вызвали у меня проблемы со сборкой. Они могут не применяться в большинстве других случаев.
Контекст:
macos 10.14.6 Mojave, Xcode 11.0, прямо перед запуском macos Catalina 10.15 . Недавно приобретенный Macbook Pro.
сбой
pip install psycopg2
, который, по сути, является пакетом Python, компилируемым из исходного кода.Я уже провел ряд предложенных корректировок в ответах, приведенных здесь.
Мои ошибки:
Что я сделал до сих пор, ничего не исправляя
xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Все та же ошибка на stdio.h.
который существует в нескольких местах:
Итак, давайте перейдем к тому первому каталогу, на
clang
который жалуемся, и посмотрим:Ха, у нас есть символическая ссылка для MacOSX10.15.sdk , но нет для MacOSX10.14.sdk . Вот моя первая
clang
ошибка снова:clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
Я предполагаю, что Apple перепрыгнула через их конфигурацию xcode и уже думает, что они на Каталине. Так как это новый Mac, старая конфигурация для 10.14 не на месте.
ИСПРАВЛЕНИЕ:
Давайте символическую ссылку 10.14 так же, как 10.15:
ln -s MacOSX.sdk/ MacOSX10.14.sdk
Кстати, если я иду в этот каталог SDK, я нахожу:
РЕЗУЛЬТАТ:
pip install psycopg2
работает.Примечание: фактическая команда pip install не ссылалась на MacOSX10.14.sdk , который появился позже, возможно, из-за механизма установки Python, анализирующего версию ОС.
источник
pip
вы используете? Я думаю, что это может быть ключевой проблемой.Не забудьте проверить Xcode Preferences -> Locations.
Инструменты командной строки, которые я выбрал, были для предыдущей версии Xcode (8.2.1 вместо 10.1)
источник
Были такие же проблемы, как ОП
вопрос
Попытка исправить
Я установил последнюю версию XCode, однако, в примечаниях к выпуску указывалось, что файл, упомянутый в предыдущем исправлении от Джонатана, больше не был доступен.
Подробности здесь https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes , в разделе « Новые функции ».
Решение, которое сработало для меня ...
Используя детали в этом комментарии, https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
Я обнаружил, что
brew doctor
сообщил, что у меня есть неиспользованные включения в моей/usr/local/
папке.Чтобы исправить, я использовал команду, предоставленную пользователем HowCrazy , чтобы найти неиспользуемые включения и переместить их во временную папку.
Повторяется здесь ...
После запуска сценариев проблема с включаемым файлом исчезла. nb: я прокомментировал эту проблему и здесь .
источник
У меня была эта проблема, и ничего не получалось . Я побежал
xcode-select --install
и также установил/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
.ЗАДНИЙ ПЛАН
Поскольку у меня были проблемы с App Store на новом ноутбуке, я был вынужден загрузить установщик Xcode Beta с веб-сайта Apple, чтобы установить Xcode вне App Store . Так что у меня была установлена только Xcode Beta .
РЕШЕНИЕ
Это, (я думаю), было сделано,
clang
чтобы не найтиSDKROOT
каталог/Applications/Xcode.app/....
, потому чтоBeta
в пути его нет, или, возможно, Xcode Beta просто не устанавливает его (я не знаю). Чтобы решить эту проблему, мне пришлось удалить Xcode Beta и решить проблему App Store, чтобы установить версию выпуска.tldr;
Если у вас есть бета-версия Xcode , попробуйте очистить все и установить выпускную версию, прежде чем испытывать решения, которые работают для других людей.
источник
Я перепробовал почти все опубликованные решения, и у меня ничего не получалось. Я использую Mojave OS (10.14.6) и то, что в итоге сработало для меня (после удаления и переустановки Xcode и CLT и заголовков SDK):
с участием
Теперь пакеты R, использующие компиляторы C, успешно установлены.
источник
Как отмечает выше Джонатан Леффлер, файл macOS_SDK_headers.pkg больше не существует в Xcode 10.1.
Что мне помогло, так это то,
brew upgrade
что обновления gcc и / или все, что делал homebrew за кулисами, решали проблемы пути.источник
apue.h зависимость все еще отсутствовала в моем
/usr/local/include
после того, как мне удалось исправить эту проблему на Mac OS Catalina, следуя инструкциям этого ответаЯ скачал зависимость вручную из git и поместил ее в
/usr/local/include
источник
У меня была такая же проблема с Golang (отладка с Goland) после миграции. Единственная (нелепая) вещь, которая помогла, это переименование следующей папки:
По-видимому, это связано со старыми файлами, которые homebrew установил и теперь сломал.
источник
@JL Пейрет прав!
если вы macos 10.14.6 Mojave, Xcode 11.0+
затем
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk / MacOSX10.14.sdk
источник