LINUX.ORG.RU

Ошибка в build

 , ,


0

2

Начал пользоваться линуксом чтобы программу одну скачать, но в одном моменте постоянно выдаёт ошибку

[ 38%] Building CXX object CMakeFiles/tf.dir/src/cache.cpp.o
In file included from /usr/include/log4cxx/log4cxx.h:45,
                 from /usr/include/log4cxx/logstring.h:28,
                 from /usr/include/log4cxx/level.h:22,
                 from /opt/ros/melodic/include/ros/console.h:46,
                 from /home/tatchimi/.cache/yay/ros-melodic-tf/src/geometry-1.12.1/tf/include/tf/transform_datatypes.h:44,
                 from /home/tatchimi/.cache/yay/ros-melodic-tf/src/geometry-1.12.1/tf/include/tf/time_cache.h:38,
                 from /home/tatchimi/.cache/yay/ros-melodic-tf/src/geometry-1.12.1/tf/src/cache.cpp:32:
/usr/include/log4cxx/boost-std-configuration.h:10:18: ошибка: «shared_mutex» в пространстве имен «std» не именует тип
   10 |     typedef std::shared_mutex shared_mutex;
      |                  ^~~~~~~~~~~~
/usr/include/log4cxx/boost-std-configuration.h:10:13: замечание: «std::shared_mutex» is only available from C++17 onwards
   10 |     typedef std::shared_mutex shared_mutex;
      |             ^~~
/usr/include/log4cxx/boost-std-configuration.h:12:30: ошибка: «shared_lock» в пространстве имен «std» не именует тип шаблона
   12 |     using shared_lock = std::shared_lock<T>;
      |                              ^~~~~~~~~~~
/usr/include/log4cxx/boost-std-configuration.h:12:25: замечание: «std::shared_lock» is only available from C++14 onwards
   12 |     using shared_lock = std::shared_lock<T>;
      |                         ^~~
In file included from /opt/ros/melodic/include/ros/console.h:46,
                 from /home/tatchimi/.cache/yay/ros-melodic-tf/src/geometry-1.12.1/tf/include/tf/transform_datatypes.h:44,
                 from /home/tatchimi/.cache/yay/ros-melodic-tf/src/geometry-1.12.1/tf/include/tf/time_cache.h:38,
                 from /home/tatchimi/.cache/yay/ros-melodic-tf/src/geometry-1.12.1/tf/src/cache.cpp:32:
/usr/include/log4cxx/level.h:283:29: ошибка: «mutex» в пространстве имен «std» не именует тип
  283 |                 static std::mutex initMutex;
      |                             ^~~~~
/usr/include/log4cxx/level.h:25:1: замечание: «std::mutex» is defined in header «<mutex>»; did you forget to «#include <mutex>»?
   24 | #include <log4cxx/helpers/object.h>
  +++ |+#include <mutex>
   25 | 
make[2]: *** [CMakeFiles/tf.dir/build.make:76: CMakeFiles/tf.dir/src/cache.cpp.o] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:2941: CMakeFiles/tf.dir/all] Ошибка 2
make: *** [Makefile:136: all] Ошибка 2
==> ОШИБКА: Произошел сбой в build().
    Прерывание...
 -> ошибка сборки: ros-melodic-tf
как докачать?

Вот это:

замечание: «std::shared_mutex» is only available from C++17 onwards

Копать в сторону -std=c++17 (или выше), или компилятора посвежее.

bugfixer ★★★★★
()
Ответ на: комментарий от bugfixer

Он не погромист судя по всему, он не будет (и не должен) разбираться в дербях конпилятора, ему с школохелпера надо софт поставить. Пусть апстрим разбирается.

xDShot ★★★★★
()

А почему ты вместо того, чтобы просто поставить её на дистрибутив официально поддерживающий, пытаешься сам собирать на всякой маргинальщине?

pinus_nigra
()
Ответ на: комментарий от Rainkord

https://aur.archlinux.org/packages/ros-melodic-desktop-full/#pinned-689417 Самый безболезненный путь. После добавления появятся репозитории с нужными пакетами.

На досуге почитать что такое вообще AUR, почему там не пакеты вовсе, как работает вся эта сборка пакетов. https://wiki.archlinux.org/title/Arch_User_Repository

xDShot ★★★★★
()
Последнее исправление: xDShot (всего исправлений: 1)
Ответ на: комментарий от Rainkord

include означает как бы включить что-то во что-то. Например - библиотеки языков программирования, есть некие базовые функции, которые нужны почти любой программе, что бы она ни делала. Например, копипаст. Чтобы каждому программисту не приходилось в каждой новой программе писать эту функцию заного, придумали библиотеки - это уже написанные функции, которые ты можешь использовать в своем проекте. Делается это при помощи include. В начале файлы пишешь include somelib.so и все, функции поставляемые somelib тебе писать не нужно. В твоем случае, то ли автор то ли мейнтейнер забыли добавить одну из этих строчек. Там указано имя файла и номер строки, можешь сделать это сам.

Я попытался его собрать, но он миллион зависимостей тянет, попозже в виртуалке попробую,если не забуду.

Dog ★★★
()
Ответ на: комментарий от pinus_nigra
Я Шульмана имел в час пополудни
Мне Шульман шибко скрашивает будни ...

Владимир

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.