16,04 лязгов: плохой выбор gcc набора инструментальных средств

Я имею два 16,04 систем с gcc (5.4.0 и 6.0.0) и лязгаю 3.8 (1:3.8-33ubuntu3.1). В первой системе лязг следует за компиляцией код C++; с добавлением-v, существенные выходные части:

Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
[...]
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0
 /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/x86_64-linux-gnu/c++/5.4.0
 /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/backward
 /usr/local/include
 /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.

Но в другой системе это перестало работать; подробные выходные шоу

Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0

Но GCC6 в этой версии не содержит заголовки, таким образом, компиляция перестала работать:

#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/6.0.0/../../../../include/c++
 /usr/local/include
 /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
In file included from TimeHelper.cc:1:
./TimeHelper.hh:4:10: fatal error: 'cstdint' file not found
#include <cstdint>

Заголовок присутствует в /usr/include/c++/5/ но этот путь не перечислен здесь. (libstdc ++-5-dev установлен.)

Системы не идентичны, но оба выпускаются под брендом новый (обновленный сегодня).

Как узнать то, что источник проблемы?

Предпочтительный набор инструментальных средств соединен проводами или предложен в файле конфигурации?

NB пытаются явно указать --gcc-toolchain к значению как /usr/lib/gcc/x86-64-linux-gnu/5 сбои: кажется, что лязг не распознает каталог как путь установки GCC. В отличие от него, для определения целевого каталога ручной сборки GCC успешно выполняется (но я хочу видеть, что он работает по умолчанию).

2
задан 29 March 2017 в 13:53

2 ответа

Исправлено после установки clang 4.0 (сама по себе проблема не устранялась), удаление остатков clang 3.8, gccgo и переустановка GCC 5 из тех же пакетов. Теперь он выбирает правильную версию.

Из-за отсутствия деталей алгоритма выбора, я не могу точно сказать, что из них вызвало этот результат. Во всяком случае, это работает.

0
ответ дан 2 December 2019 в 09:15

На машине, которая работает:

$ find /usr/include/c++/ -name cstdint
/usr/include/c++/5/tr1/cstdint
/usr/include/c++/5/cstdint
$ dpkg -S /usr/include/c++/5/cstdint
libstdc++-5-dev:amd64: /usr/include/c++/5/cstdint

Так что это в libstdc++-5-dev.

http://packages.ubuntu.com/xenial/libstdc++-5-dev

http://packages.ubuntu.com/xenial/amd64/libstdc++ -5-dev / filelist

Давайте рассмотрим libstdc++-6-dev тогда:

http://packages.ubuntu.com/zesty/libstdc++-6-dev [ 116]

http://packages.ubuntu.com/zesty/arm64/libstdc++-6-dev/filelist

...
/usr/include/c++/6/cstdint
...
...
/usr/include/c++/6/tr1/cstdint
...
0
ответ дан 2 December 2019 в 09:15

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

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