Użyłem polecenia gcc na terminalu do kompilowania programów w C, ale nagle, po aktualizacji systemu operacyjnego mojego Maca (do macOS 10.14 Mojave i XCode 10.0), zacząłem otrzymywać wiadomość:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
Mam już zainstalowane gcc, ponieważ mogę je znaleźć /usr/local/bin
i naprawdę jest tam gcc. Próbowałem uruchomić ten sam plik na moim innym komputerze iMac i działał bez problemu.
Próbowałem uruchomić xcode-select --install
i został już zainstalowany, dlatego nie rozwiązało to problemu, który mam teraz. Zgaduję, że ścieżka jest pomieszana, ponieważ nie wydaje się, aby można ją było znaleźć gcc
po rozpoczęciu kopiowania i wklejania niektórych poleceń z innych zasobów, aby rozwiązać ten problem.
Chciałbym uzyskać pomoc w tej sprawie.
echo "#include <a.h>" | gcc -v -x c -
xocde-select --install
jest to właściwe rozwiązanie. Do którego systemu zostałeś uaktualniony? Mojave 10.14? Który XCode masz zainstalowany? 10.0 czy inna wersja?open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
w wierszu poleceń) mam/usr/include
ponownie, a moje GCC 8.2.0 znów działa. Dzięki za wskazówkę; dobra robota na znalezieniu go. Proponuję napisać odpowiedź, ponieważ prawdopodobnie inne osoby będą miały problem.Odpowiedzi:
TL; DR
Upewnij się, że pobrałeś najnowszy pakiet `` Narzędzia wiersza poleceń '' i uruchom go z terminala (wiersza poleceń):
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łemxcode-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ąRozwiązanie robocze
Następnie Maxxx zauważył :
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.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
, aleopen
polecenie u góry odpowiedzi przywróciło ją ponownie. Data, którą miałem w pliku dlaopen
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: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).źródło
/usr/include
, a pakiet wymieniony w powyższej odpowiedzi nie jest obecny/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
ixcode-select --install
mówi, że narzędzia wiersza poleceń obecnie nie są dostępne.fatal error: bits/ctype_base.h: No such file or directory: #include <bits/ctype_base.h>
podczas kompilacji GCC 7.4.0 używając libstdc ++ na Mojave dla mniePo wypróbowaniu każdej odpowiedzi, którą mogłem znaleźć tutaj i w Internecie, nadal otrzymywałem błędy dotyczące niektórych brakujących nagłówków. Podczas próby skompilowania pyRFR otrzymywałem błędy dotyczące
stdexcept
braku znalezienia, które najwyraźniej nie zostały zainstalowane/usr/include
z innymi nagłówkami. Jednak znalazłem miejsce, w którym ukrywał się w Mojave i dodałem to na końcu mojego~/.bash_profile
pliku:export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1
Po wykonaniu tej czynności mogę teraz skompilować pyRFR i inne programy C / C ++. Zgodnie z tym
echo | gcc -E -Wp,-v -
, gcc szukał tych nagłówków w starej lokalizacji (bez/c++/v1
), ale nie w nowej, więc dodanie tego do CFLAGS naprawiło to.źródło
Kiedy ty
Mojave 10.14.6
/usr/include
został ponownie usuniętyThe file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.
ixcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Następnie tym, co pomogło mi odzyskać wspomniany pakiet, było usunięcie całego
CommandLineTools
folderu(sudo) rm -rf /Library/Developer/CommandLineTools
i ponowne jego zainstalowaniexcode-select --install
.źródło
macOS_SDK_headers_for_macOS_10.14.pkg
uzyskaj dostępne, a polecenieopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
zrobiło to, co miało zrobić. Stukrotne dzięki!!export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
Problem polega na tym, że Xcode, szczególnie Xcode 10.x, nie zainstalował wszystkiego, więc upewnij się, że narzędzia wiersza poleceń są zainstalowane, wpisz to w powłoce terminala:
uruchom również Xcode i upewnij się, że zainstalowano wszystkie wymagane instalacje (jeśli tak nie jest, powinieneś otrzymać monit), a ponieważ Xcode 10 nie instaluje pełnego zestawu SDK systemu Mac OS, uruchom instalator w
ponieważ ten pakiet nie jest instalowany przez Xcode 10.
źródło
Znalazłem świetne rozwiązanie i wyjaśnienie w tym komentarzu na GitHub . Sztuczka:
Wykonałem pracę.
źródło
UWAGA: Poniższe informacje są prawdopodobnie bardzo kontekstowe i ograniczone czasowo przed zmianą / ogólną dostępnością macos Catalina 10.15. Nowy laptop. Piszę 1 października 2019 r.
Sądzę, że te szczególne okoliczności spowodowały u mnie problemy z budową. W większości innych przypadków mogą nie mieć zastosowania.
Kontekst:
macos 10.14.6 Mojave, Xcode 11.0, tuż przed premierą macos Catalina 10.15 . Nowo zakupiony Macbook Pro.
niepowodzenie
pip install psycopg2
, które jest w zasadzie kompilacją pakietu Pythona ze źródła.Dokonałem już szeregu sugerowanych poprawek w udzielonych tutaj odpowiedziach.
Moje błędy:
Co zrobiłem do tej pory, niczego nie naprawiając:
xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Wciąż ten sam błąd na stdio.h.
który istnieje w wielu miejscach:
A więc przejdźmy do tego pierwszego katalogu, na który
clang
narzekają i spójrzmy:Hah, mamy łącze symboliczne dla MacOSX10.15.sdk , ale żadnego dla MacOSX10.14.sdk . Oto mój pierwszy
clang
błąd:clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
Domyślam się, że Apple wyskoczyło z pistoletu na ich konfiguracji xcode i już myśli, że są na Catalinie. Ponieważ jest to nowy komputer Mac, nie ma starej konfiguracji dla 10.14.
POPRAWKA:
Załóżmy, że link symboliczny 10.14 jest taki sam jak 10.15:
ln -s MacOSX.sdk/ MacOSX10.14.sdk
btw, jeśli przejdę do tego katalogu sdk, znajdę:
WYNIK:
pip install psycopg2
Pracuje.Uwaga: faktyczna komenda pip install nie odnosiła się do MacOSX10.14.sdk , który pojawił się później, prawdopodobnie przez mechanizm instalacji Pythona introspekcji wersji systemu operacyjnego.
źródło
pip
używasz? Myślę, że to może być kluczowy problem.Koniecznie sprawdź Preferencje Xcode -> Lokalizacje.
Wybrane przeze mnie narzędzia wiersza poleceń były przeznaczone dla poprzedniej wersji Xcode (8.2.1 zamiast 10.1)
źródło
Miał podobne problemy jak PO
Kwestia
Próba naprawy
Zainstalowałem najnowszą wersję XCode, jednak uwagi do wydania wskazywały, że plik wspomniany w poprzedniej poprawce, pochodzący z Jonathana tutaj, nie był już dostępny.
Szczegóły tutaj https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes , w sekcji Nowe funkcje .
Rozwiązanie, które zadziałało dla mnie ...
Korzystając ze szczegółów w tym komentarzu, https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724
Okazało się, że
brew doctor
zgłosiłam, że w moim/usr/local/
folderze znajdują się nieużywane pliki dołączone .Aby to naprawić, użyłem polecenia dostarczonego przez użytkownika HowCrazy , aby znaleźć nieużywane dołączenia i przenieść je do folderu tymczasowego.
Powtarzane tutaj ...
Po uruchomieniu skryptów problem z plikiem dołączanym zniknął. Uwaga: tutaj też skomentowałem tę kwestię .
źródło
Miałem ten problem i nic nie działało . Pobiegłem
xcode-select --install
i też zainstalowałem/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
.TŁO
Ponieważ miałem problemy z App Store na nowym laptopie, byłem zmuszony pobrać instalator Xcode Beta ze strony Apple, aby zainstalować Xcode poza App Store . Więc zainstalowałem tylko Xcode Beta .
ROZWIĄZANIE
To (chyba) powodowało,
clang
że nie mogłem znaleźćSDKROOT
katalogu/Applications/Xcode.app/....
, ponieważ nie ma goBeta
w ścieżce, a może Xcode Beta po prostu go nie instaluje (nie wiem). Aby rozwiązać ten problem, musiałem usunąć Xcode Beta i rozwiązać problem ze sklepem App Store, aby zainstalować nową wersję.tldr;
Jeśli masz Xcode Beta , spróbuj wyczyścić wszystko i zainstalować wersję wydania, zanim wypróbujesz rozwiązania, które działają dla innych osób.
źródło
Wypróbowałem prawie wszystkie opublikowane rozwiązania i nic nie działało. Używam Mojave OS (10.14.6) i co w końcu zadziałało (po usunięciu i ponownej instalacji Xcode oraz CLT i nagłówków SDK):
z
Teraz pakiety R, które opierają się na kompilatorach języka C, są instalowane pomyślnie
źródło
Jak Jonathan Leffler wskazuje powyżej, plik macOS_SDK_headers.pkg nie istnieje już w Xcode 10.1.
To, co zadziałało, to zrobić,
brew upgrade
a aktualizacje gcc i / lub cokolwiek innego zrobiło homebrew za kulisami, rozwiązało problemy ze ścieżką.źródło
/usr/local/include
Po tym, jak udało mi się naprawić ten problem w systemie Mac OS Catalina, nadal brakowało zależności apue.h, postępując zgodnie z instrukcjami tej odpowiedziPobrałem zależność ręcznie z gita i umieściłem ją w
/usr/local/include
źródło
Miałem ten sam problem z Golang (debugowanie z Golandem) po migracji. Jedyną (śmieszną) rzeczą, która pomogła, jest zmiana nazwy następującego folderu:
Najwyraźniej jest to związane ze starymi plikami, które zainstalował homebrew, a teraz jest uszkodzony.
źródło
@JL Peyret ma rację!
jeśli masz macos 10.14.6 Mojave, Xcode 11.0+
następnie
cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk / MacOSX10.14.sdk
źródło