Podczas kompilacji projektu w C++ ostatnio zacząłem widzieć następujący błąd:

/Library/Developer/CommandLineTools/usr/include/c++/v1/stdlib.h(94): catastrophic error: cannot open source file "stdlib.h"
#include_next <stdlib.h>

Jest to bardzo dziwne, ponieważ naruszająca linia #include_next <stdlib.h> znajduje się w pliku /Library/Developer/CommandLineTools/usr/include/c++/v1/stdlib.h, co oznacza, że ​​plik w jakiś sposób próbuje się dołączyć i kończy się niepowodzeniem.

To jest domyślny plik systemowy, więc nie rozumiem, dlaczego powinien zostać nagle uszkodzony. A rady byłyby bardzo mile widziane.

(Działa na macOS Mojave z kompilatorem Intel icpc)

4
crevell 21 listopad 2018, 18:57
Czy icpc prawidłowo pobiera narzędzia wiersza poleceń z XCode (jeśli je zainstalowałeś)?
 – 
Matthieu Brucher
21 listopad 2018, 18:59
Pokaż 10 linii wokół 94
 – 
i486
21 listopad 2018, 19:01
Zainstalowane są narzędzia wiersza polecenia Xcode. Obraźliwy plik jest jego częścią.
 – 
crevell
21 listopad 2018, 19:06
Wiersze wokół 94 są następujące: #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header #endif #include_next #ifdef __cplusplus extern "C++" {
 – 
crevell
21 listopad 2018, 19:07
Czy to działa, jeśli dołączysz wersję C++ tego pliku, #include <cstdlib>?
 – 
Eljay
21 listopad 2018, 19:08

2 odpowiedzi

Najlepsza odpowiedź

Ten problem został ostatecznie rozwiązany przez uruchomienie instalatora macOS_SDK_headers_for_macOS_10.14.pkg znajdującego się pod adresem /Library/Developer/CommandLineTools/Packages

2
crevell 21 listopad 2018, 19:14

Następujące polecenie pomogło mi na MacOSX Big Sur: export CPLUS_INCLUDE_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/

0
Oscar Molina 10 grudzień 2020, 15:15