TL; DR
Upewnij się, że pobrałeś najnowszy pakiet `` Narzędzia wiersza poleceń '' i uruchom go z terminala (wiersza poleceń):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Aby uzyskać więcej informacji na temat Cataliny, zobacz Nie można skompilować programu w języku C na komputerze Mac po uaktualnieniu do wersji Catalina 10.15 .
Wydobywanie częściowo spójnej odpowiedzi z dość obszernych komentarzy…
Preambuła
Bardzo często xcode-select --install
było to właściwe rozwiązanie, ale tym razem nie wydaje się pomagać. Czy próbowałeś uruchomić główny interfejs GUI Xcode? Może zainstalować dodatkowe oprogramowanie i wyczyścić. Zrobiłem to po zainstalowaniu Xcode 10.0, ale tydzień lub więcej temu, na długo przed aktualizacją do Mojave.
Zauważyłem, że jeśli twoje GCC jest zainstalowane w /usr/local/bin
, prawdopodobnie nie używasz GCC z Xcode; to jest zwykle instalowane w /usr/bin
.
Ja też zaktualizowałem do macOS 10.14 Mojave i Xcode 10.0. Jednak zarówno system, jak /usr/bin/gcc
i system /usr/bin/clang
działają dla mnie ( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
dla obu). Mam problem z nie znajdowaniem nagłówków w mojej domowej kompilacji GCC 8.2.0 /usr/include
, co jest równoległe do problemu z /usr/local/bin/gcc
nie znajdowaniem nagłówków.
Zrobiłem trochę porównania, a moja maszyna Mojave /usr/include
w ogóle nie /usr/bin/clang
ma , ale jest w stanie poprawnie skompilować. Nagłówek ( _stdio.h
z początkowym podkreśleniem) był w moim starym /usr/include
; teraz go brakuje (stąd mój problem z GCC 8.2.0). Uruchomiłem xcode-select --install
i powiedział " xcode-select: note: install requested for command line developer tools
", a następnie uruchomiłem instalator GUI, który pokazał mi licencję, na którą się zgodziłem, i pobrał i zainstalował narzędzia wiersza poleceń - a przynajmniej tak twierdził.
Następnie uruchomiłem GUI Xcode (przestrzeń poleceń, Xcode, powrót) i powiedziałem, że muszę zainstalować więcej oprogramowania, ale nadal nie /usr/include
. Ale mogę skompilować z /usr/bin/clang
i /usr/bin/gcc
- a -v
opcja sugeruje, że używają
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Rozwiązanie robocze
Następnie Maxxx zauważył :
Znalazłem sposób. Jeśli korzystamy z Xcode 10, zauważysz, że jeśli przejdziesz do /usr
w Finderze, nie zobaczysz już folderu o nazwie „include”, dlatego terminal skarży się na brak plików nagłówkowych, które są w nim zawarte folder „include”. W informacjach o wydaniu Xcode 10.0 jest napisane, że istnieje pakiet:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
i powinieneś zainstalować ten pakiet, aby mieć /usr/include
zainstalowany folder. W takim razie powinieneś być gotowy.
Gdy wszystko inne zawiedzie, przeczytaj instrukcję lub, w tym przypadku, uwagi do wydania. Nie jestem strasznie zaskoczony, gdy stwierdzam, że Apple chce odwrócić się od swojego uniksowego dziedzictwa, ale jestem rozczarowany. Jeśli będą ostrożni, mogą mnie odepchnąć. Dziękuję za informację.
Po zainstalowaniu pakietu za pomocą następującego polecenia w wierszu poleceń, /usr/include
znowu mam , a moje GCC 8.2.0 znów działa.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Pobieranie narzędzi wiersza poleceń
Jak Vesal wskazuje w cennym komentarzu , musisz pobrać pakiet narzędzi wiersza poleceń dla Xcode 10.1 na Mojave 10.14, a możesz to zrobić z:
Aby pobrać plik, musisz zalogować się za pomocą Apple ID. Po zakończeniu pobierania zainstaluj pakiet narzędzi wiersza polecenia. Następnie zainstaluj nagłówki zgodnie z opisem w sekcji „Rozwiązanie robocze”.
To działało dla mnie na Mojave 10.14.1. Musiałem to pobrać wcześniej, ale zapomniałem, gdy odpowiadałem na to pytanie.
Zaktualizuj do Mojave 10.14.4 i Xcode 10.2
Około 17.05.2019 zaktualizowałem do Mojave 10.14.4, a narzędzia wiersza poleceń Xcode 10.2 również zostały zaktualizowane (lub narzędzia wiersza poleceń Xcode 10.1 zostały zaktualizowane do 10.2). open
Polecenia pokazane powyżej stałe brakujących nagłówków. Nadal mogą pojawić się przygody związane z uaktualnieniem głównego Xcode do 10.2, a następnie ponownym ponownym zainstalowaniem narzędzi wiersza poleceń i pakietu nagłówków.
Uaktualnij do Xcode 10.3 (dla Mojave 10.14.6)
W dniu 2019-07-22 dostałem powiadomienie za pośrednictwem App Store, że aktualizacja do Xcode 10.3 jest dostępna i zawiera SDK dla iOS 12.4, tvOS 12.4, watchOS 5.3 i macOS Mojave 10.14.6. Zainstalowałem go na jednym z moich komputerów 10.14.5, uruchomiłem go i zainstalowałem dodatkowe komponenty, tak jak sugerował, i wydaje się, że pozostał /usr/include
nienaruszony.
Później tego samego dnia odkryłem, że dostępny jest również macOS Mojave 10.14.6 (Preferencje systemowe ⟶ Aktualizacja oprogramowania) wraz z pakietem narzędzi wiersza poleceń IIRC (został pobrany i zainstalowany automatycznie). Zainstalowanie aktualizacji systemu operacyjnego po raz kolejny wymazało /usr/include
, ale open
polecenie u góry odpowiedzi przywróciło ją ponownie. Data, którą miałem w pliku dla open
polecenia, to 2019-07-15.
Zaktualizuj do XCode 11.0 (dla Catalina 10.15)
Aktualizacja do XCode 11.0 („obejmuje Swift 5.1 i SDK dla iOS 13, tvOS 13, watchOS 6 i macOS Catalina 10.15”) została wydana 21.09.2019. Zostałem powiadomiony o „dostępnych aktualizacjach”, pobrałem go i zainstalowałem na komputerach z systemem macOS Mojave 10.14.6 za pośrednictwem aplikacji App Store (zakładka aktualizacje) bez problemów i bez konieczności korzystania z /usr/include
. Natychmiast po instalacji (przed uruchomieniem samej aplikacji) spróbowałem ponownej kompilacji i powiedziano mi:
Wyrażenie zgody na licencję Xcode / iOS wymaga uprawnień administratora, uruchom „sudo xcodebuild -license”, a następnie ponów to polecenie.
Uruchomienie that ( sudo xcodebuild -license
) pozwoliło mi uruchomić kompilator. Od tego czasu uruchamiam aplikację, aby zainstalować dodatkowe składniki, których potrzebuje; nadal nie ma problemu. Zobaczymy, co się stanie, gdy zaktualizuję do samej Cataliny - ale moje komputery z systemem macOS Mojave 10.14.6 są w tej chwili w porządku (2019-09-24).
echo "#include <a.h>" | gcc -v -x c -