libc ++ не работает на macOS High Sierra - PullRequest
0 голосов
/ 13 мая 2018

Я считаю, что эта проблема связана с Сломанными библиотеками c ++ std в macOS High Sierra 10.13 , однако исправления там не помогли - так что это может быть проблема другого типа.


выпуск

Это код, который я использую для тестирования компиляции; Однако я могу воспроизвести проблему с любым файлом C ++.

#include <iostream>
#include <iterator>
#include <algorithm>
int main() {
     std::copy(std::istream_iterator<char>{std::cin}, {}, std::ostream_iterator<char>{std::cout, ""});
    return 0;
}

Это приводит к этой ошибке:

clang++ -std=c++11 test.cpp
In file included from test.cpp:1:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/iostream:38:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/ios:216:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__locale:15:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/string:470:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/string_view:169:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/__string:56:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/algorithm:643:
In file included from /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/memory:650:
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/iterator:432:10: fatal error: 'Availability.h' file not found
#include <Availability.h>
         ^~~~~~~~~~~~~~~~

Теперь я не уверен, почему этот заголовок будет отсутствовать. В любом случае, я скачал старые версии заголовков из интернета и попробовал это. Это фактически скомпилировало мой тестовый файл, но привело к ошибкам в других файлах, что привело меня к мысли, что мой набор инструментов был сломан. Затем я полностью переустановил и стабильную, и бета-версии Xcode, получил точно такую ​​же проблему.

Другая ошибка, которую я получаю, это:

/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/math.h:1272:93: error: no member named 'llrintf' in the global namespace
 inline _LIBCPP_INLINE_VISIBILITY long long llrint(float __lcpp_x) _NOEXCEPT       {return ::llrintf(__lcpp_x);}

То, что я заметил, было точно таким же, как этот древний https://gist.github.com/pjmartorell/4165805. Этот гист не имеет исправления.


Шаги, которые я пробовал

  • Переключение на стабильный набор инструментов
  • Переустановка Xcode
  • Rebooting
  • Загрузка отсутствующих заголовков вручную
  • xcode-select --install

Это моя первая проблема с SO, извиняюсь, если это не в том месте, или если я не вдавался в подробности. Это просто сводит меня с ума в этот момент.

1 Ответ

0 голосов
/ 15 мая 2018

Мне кажется, что каким-то образом вы получили частичную установку, где заголовки libc ++ хороши, а остальные заголовки - нет: - (

На моем компьютере (Xcode больше нет) у меня есть две копии этого файла: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/Availability.h /usr/include/Availability.h

Возможно, вы захотите запустить clang++ -v <your source file>, который скажет вам, куда он смотрит.

Когда я это делаю, я получаю:

$ clang -v junk.cpp
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
 "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.13.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name junk.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-cpu penryn -target-linker-version 351.8 -v -dwarf-column-info -debugger-tuning=lldb -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/9.1.0 -stdlib=libc++ -fdeprecated-macro -fdebug-compilation-dir /Users/marshall -ferror-limit 19 -fmessage-length 80 -stack-protector 1 -fblocks -fobjc-runtime=macosx-10.13.0 -fencode-extended-block-signature -fcxx-exceptions -fexceptions -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/r9/6nps4qvj3zlcwhs52mfb0yg00000gn/T/junk-c5a5d1.o -x c++ junk.cpp
clang -cc1 version 9.1.0 (clang-902.0.39.1) default target x86_64-apple-darwin17.5.0
ignoring nonexistent directory "/usr/include/c++/v1"
#include "..." search starts here:
#include <...> search starts here:
 /Library/Developer/CommandLineTools/usr/include/c++/v1
 /usr/local/include
 /Library/Developer/CommandLineTools/usr/lib/clang/9.1.0/include
 /Library/Developer/CommandLineTools/usr/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.

и попытайтесь выяснить, чего вам не хватает в этом.

...