Chcę użyć clang ++ zamiast g ++ do kompilowania moich plików c ++, podczas gdy g ++ jest domyślnym kompilatorem systemu.
próbowałem sudo update-alternatives --install c++ c++ /home/guo/bin/clang++ 100
i nastaw CC
środowisko. Ale nie działają. Bazel nadal używa g ++ jako kompilatora.
/> Po godzinie Bazel używa clang ++. Ale wystąpił błąd.
ERROR: /home/guo/utils/lib/BUILD:2:1: C++ compilation of rule "//utils/lib:get_pdf" failed: linux-sandbox failed: error executing command /home/guo/.cache/bazel/_bazel_guo/d2d93a82f24e8dc5485ac1b29928428e/execroot/_bin/linux-sandbox ... (remaining 41 argument(s) skipped).
src/main/tools/linux-sandbox-pid1.cc:592: "execvp(/home/guo/lib/clang, 0x23abde0)": Permission denied
Target //utils/lib:get_pdf failed to buildenter code here
Use --verbose_failures to see the command lines of failed build steps.
INFO: Elapsed time: 0.159s, Critical Path: 0.06s
Ps: /home/guo/lib/clang
to katalog, a nie plik binarny na moim komputerze. Myślę, że tutaj powinno być /home/guo/bin/clang++
ale nie wiem, jak to zrobić Bazel
znać to.
/> Ps: Wygląda na to, że musisz zrestartować
Bazel
serwer po zmianie środowiska.
Odpowiedzi:
3 dla odpowiedzi № 1Tak więc używa się właściwego sposobu konfigurowania łańcucha narzędzi C ++ dla Bazel CROSSTOOL. Bo tak jest nietrywialne przedsięwzięcie, Bazel próbuje automatycznie wykryć twój toolchain używając cc_configure.bzl scenariusz. Ten skrypt sprawdza niektóre zmienne środowiskowe i jeśli jest obecny, użyje wartości z tego miejsca. Aby skonfigurować gcc, możesz ustawić CC
Zmienna i Bazel go wezmą (w funkcji _find_cc).
Ponieważ te wyniki są buforowane, uruchom bazel clean --expunge
aby opróżnić pamięć podręczną i ponownie uruchomić autokonfigurację następnym razem.