Невозможно собрать cpp, используя предварительно собранный бинарный файл clang: файл wchar.h не найден - PullRequest
0 голосов
/ 19 апреля 2020

Я использую MacOS 10.15. Поскольку в комплект поставки MacOS входит лягушонок clang-format. Я установил другой предварительно собранный бинарный файл clang из здесь . Я добавил путь к двоичному файлу в мою PATH переменную.

export PATH="$HOME/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin:$PATH"

Я попытался скомпилировать простую программу:

#include <iostream>

int main(int argc, char *argv[]) {
    std::cout << "Hello world!\n";
    return 0;
}

с помощью следующей команды:

clang++ hello.cpp -o hello

Я получил следующую ошибку:

In file included from hello.cpp:1:
In file included from /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/iostream:37:
In file included from /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/ios:214:
In file included from /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/iosfwd:95:
/Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/bin/../include/c++/v1/wchar.h:118:15: fatal error: 'wchar.h' file not found
#include_next <wchar.h>
              ^~~~~~~~~
1 error generated.

Я обнаружил, что wchar.h в комплекте с этим предварительно собранным пакетом находится в следующем каталоге:

/Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/include/c++/v1/

Итак, я добавил флаг -I:

clang++ -I /Users/jdhao/tools/clang+llvm-10.0.0-x86_64-apple-darwin/include/c++/v1 hello.cpp -o hello 

Ошибка по-прежнему сохраняется.

Если я использую clang++, поставляемый с MacOS, у меня нет проблем с компиляцией исходного кода:

# the following works without any error
/usr/bin/clang++ hello.cpp -o hello

Я видел сообщение здесь , здесь и здесь , но решения не применяются.

1 Ответ

1 голос
/ 19 апреля 2020

Вы получили clang-format неправильно. Сбросьте систему в состояние до того, как вы установили другой предварительно собранный бинарный файл. Затем используйте Homebrew для установки clang-формата

brew install clang-format

clang + llvm-10.0.0-x86_64-apple-darwin не подходит для вашего Ma c. Это зависит от системных платформ, которые недоступны, поэтому вы получаете ошибку wchar.h в системной платформе. Когда вы устанавливаете clang + llvm-10.0.0-x86_64-apple-darwin, вы игнорируете зависимости фреймворка. Доморощенный позаботится о зависимости.

...