TL; DR
Переконайтесь, що ви завантажили останній пакет "Інструменти командного рядка" та запустіть його з терміналу (командного рядка):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Щоб отримати докладнішу інформацію про Catalina, див. Неможливо скласти програму C на Mac після оновлення до Catalina 10.15 .
Витяг напівзв’язної відповіді з досить обширних коментарів ...
Преамбула
Дуже часто xcode-select --install
було правильним рішенням, але цього часу, здається, це не допоможе. Ви спробували запустити основний інтерфейс графічного інтерфейсу Xcode? Він може встановити додаткове програмне забезпечення для вас та очистити. Я зробив це після встановлення 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, повернення), і він сказав, що потрібно встановити ще трохи програмного забезпечення, але все ще немає /usr/include
. Але я можу компілювати з /usr/bin/clang
і /usr/bin/gcc
- і -v
варіант пропонує, що вони використовують
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Робоче рішення
Тоді Maxxx зазначив :
Я знайшов спосіб. Якщо ми використовуємо Xcode 10, ви помітите, що якщо ви перейдете до /usr
пункту Finder, ви більше не побачите папку під назвою "включити", тому термінал скаржиться на відсутність файлів заголовків, які містяться всередині папку "включити". У примітках до випуску Xcode 10.0 написано, що є пакет:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
і вам слід встановити цей пакет, щоб мати /usr/include
встановлену папку. Тоді вам слід добре піти.
Коли все інше не вдається, прочитайте посібник або, у цьому випадку, примітки до випуску. Я не страшно здивований, коли компанія Apple хоче повернути собі спину на спадщину Unix, але я розчарована. Якщо вони обережні, вони можуть мене відігнати. Спасибі за інформацію.
Встановивши пакет за допомогою наступної команди в командному рядку, я /usr/include
знову, і мій GCC 8.2.0 працює ще раз.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Завантаження інструментів командного рядка
Як зазначив Vesal у цінному коментарі , вам потрібно завантажити пакет інструментів командного рядка для Xcode 10.1 на Mojave 10.14, і це можна зробити з:
Вам потрібно увійти за допомогою Apple ID, щоб отримати можливість завантаження. Після завершення завантаження встановіть пакет «Інструменти командного рядка». Потім встановіть заголовки, як описано в розділі «Робоче рішення».
Це працювало для мене на Мохаве 10.14.1. Я, мабуть, завантажував це раніше, але до часу відповіді на це питання я забув.
Оновіть до Mojave 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 (для Mojave 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 також доступний (System Preferences Update Оновлення програмного забезпечення), а також пакет IIRC утиліти Command Line (завантажений та встановлений автоматично). Встановлення o / s оновлення ще раз знищило /usr/include
, але open
команда вгорі відповіді знову відновила його. Дата, яку я мав у файлі для open
команди, - 2019-07-15.
Оновлення до XCode 11.0 (для Каталіни 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
. Відразу після встановлення (перед тим, як запустити саму програму) я спробував рекомпіляцію і мені сказали:
Погоджуючись з ліцензією Xcode / iOS, потрібні права адміністратора, будь ласка, запустіть «sudo xcodebuild -license» та повторіть цю команду.
Запуск цього ( sudo xcodebuild -license
) дозволив мені запустити компілятор. Відтоді я запускаю програму для установки додаткових необхідних їй компонентів; все ще немає проблем. Залишається побачити, що станеться, коли я переходжу на саму Каталіну - але мої машини macOS Mojave 10.14.6 на даний момент обоє в порядку (2019-09-24).
echo "#include <a.h>" | gcc -v -x c -