лязг не находит C++ stdlib на моей человечности 18.04, но это делает на совершенно новой установке. Что я повредил?

Я создавал пакет GitHub, некоторое время... новая версия выходит, и я создаю ее. Это использует clang6, который является значением по умолчанию на моей человечности, человечности 18.04

теперь, этому не удается скомпилировать, это не может найти, что стандарт включает. На запасе совершенно новая человечность 18.04 это работает. Таким образом, я сделал что-то, что повредилось. Я использую пользовательское ядро, на основе ubutntu hwe (так 5.3). Я применяю маленький патч для восстановления intel i915 powersaving.

Я могу упростить проблему:

$ more test.cc
#include <vector>

Это работает, когда я делаю это:

clang -c test.cc -v -stdlib=libc++

Кроме того, на запасе 18.04.4 это работает после того, как я способный лязг установки.

Но на моем ноутбуке, это перестало работать:

clang -c test.cc -v 
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/9
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/usr/lib/llvm-6.0/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name test.cc -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -v -coverage-notes-file /home/tim/test.gcno -resource-dir /usr/lib/llvm-6.0/lib/clang/6.0.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++ -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/x86_64-linux-gnu -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/backward -internal-isystem /usr/include/clang/6.0.0/include/ -internal-isystem /usr/local/include -internal-isystem /usr/lib/llvm-6.0/lib/clang/6.0.0/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /home/tim -ferror-limit 19 -fmessage-length 232 -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o test.o -x c++ test.cc
clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target x86_64-pc-linux-gnu
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/backward"
ignoring nonexistent directory "/include"
ignoring duplicate directory "/usr/include/clang/6.0.0/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++
 /usr/include/clang/6.0.0/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
test.cc:1:10: fatal error: 'vector' file not found
#include <vector>
         ^~~~~~~~
1 error generated.

Обновление: Я нашел это сообщение: https://stackoverflow.com/a/54926827/401226, который говорит для рассмотрения числа последней версии здесь:/usr/lib/На моем ноутбуке, это - версия 9. Действительно, у меня есть версия 9 gcc установленный, но у меня нет v9 stdlib (libstdc ++-9-dev).

У меня не было g ++-9 установленными.

0
задан 20 February 2020 в 11:59

1 ответ

Вот то, что я изучил:

лязг по умолчанию ищет gcc стандартную библиотеку C++, и это останавливается, если это не работает.

Это ищет последнюю версию. Последняя версия определяется последней версией установленного gcc. Таким образом, если у Вас нет g ++ установленным, какие соответствия Ваша самая высокая gcc версия, лязг бросает, когда это не может найти libstdc ++ в первый раз.

Таким образом, у меня был gcc-, но у меня не было g ++-9.

apt install g++-9

решенный проблема, поскольку это устанавливает соответствие libstdc ++-9.dev

0
ответ дан 20 February 2020 в 22:49

Другие вопросы по тегам:

Похожие вопросы: