Рейтинг:2

Я бы хотел, чтобы мой Kinect 2 распознавался Ubuntu 21.10 как веб-камера, но gcc 10 не принимался для компиляции libfreenect2 с nvidia 470+CUDA 11.

флаг in

Привет всем любителям Linux/Ubuntu,

Я пытаюсь запустить свой Kinect 2 на моем Ubuntu 21.10. Команды, которые я выдал одну за другой, следующие:

marietto-BHYVE:/home/marietto# nvcc --version

nvcc: драйвер компилятора NVIDIA (R) Cuda
Авторское право (c) 2005-2021 Корпорация NVIDIA
Построено Mon_May__3_19:15:13_PDT_2021
Инструменты компиляции Cuda, выпуск 11.3, V11.3.109
Сборка cuda_11.3.r11.3/compiler.29920130_0


marietto-BHYVE:/home/marietto/Scrivania/libfreenect2# nvidia-smi

| NVIDIA-SMI 470.86 Версия драйвера: 470.86 Версия CUDA: 11.4     

Согласно этому сайту:

https://stackoverflow.com/questions/6622454/cuda-несовместимая-с-моей-gcc-версией

Для версий CUDA 11.1, 11.2, 11.3, 11.4.0 ----> максимальная поддерживаемая версия GCC = 10

Итак, я должен сделать:

MAX_GCC_VERSION=10

sudo apt установить gcc-$MAX_GCC_VERSION g++-$MAX_GCC_VERSION

g++-10 уже доступен в самой последней доступной версии (10.3.0-11ubuntu1).
gcc-10 уже имеет самую последнюю доступную версию (10.3.0-11ubuntu1).

sudo ln -s /usr/bin/gcc-10 /usr/lib/cuda/bin/gcc
sudo ln -s /usr/bin/gcc-$MAX_GCC_VERSION /usr/lib/cuda/bin/gcc 
sudo ln -s /usr/bin/g++-$MAX_GCC_VERSION /usr/lib/cuda/bin/g++

потому что версия cuda, которую я установил, требует версии gcc не выше 10.

Позже, согласно этому руководству:

https://www.notaboutmy.life/posts/run-kinect-2-on-ubuntu-20-lts/

Я должен скомпилировать libfreenect2 следующим образом:

клон git https://github.com/OpenKinect/libfreenect2.git
компакт-диск libfreenect2
сборка mkdir && cd сборка
cmake .. -DCMAKE_INSTALL_PREFIX=/home/marietto/Desktop/libfreenect2

к сожалению, кажется, что он не примет gcc 10 для компиляции libfreenect2:

marietto-BHYVE:/home/marietto/Scrivania/libfreenect2# сделать

[ 4%] Встроенная цель generate_resources_tool
[ 7%] Создание объекта NVCC (устройство) CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o
В файле, включенном из /usr/include/cuda_runtime.h:83,
                 из <командной строки>:
/usr/include/crt/host_config.h:139:2: error: #error -- неподдерживаемая версия GNU! Версии gcc позже 10 не поддерживаются! Флаг nvcc '-allow-unsupported-compiler' может использоваться для переопределения этой проверки версии; однако использование неподдерживаемого хост-компилятора может привести к сбою компиляции или неправильному выполнению во время выполнения. Используйте на свой риск.
  139 | #error -- неподдерживаемая версия GNU! Версии gcc позже 10 не поддерживаются! Флаг nvcc '-allow-unsupported-compiler' может использоваться для переопределения этой проверки версии; однако использование неподдерживаемого хост-компилятора может привести к сбою компиляции или неправильному выполнению во время выполнения. Используйте на свой риск.
      | ^~~~~
/home/marietto/Scrivania/libfreenect2/src/cuda_kde_depth_packet_processor.cu:39:10: фатальная ошибка: helper_math.h: файл или каталог не существует
   39 | #include <helper_math.h>
      | ^~~~~~~~~~~~~~~
компиляция прекращена.
Ошибка CMake на cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o.RelWithDebInfo.cmake:220 (сообщение):
  Генерация ошибки
  /home/marietto/Scrivania/libfreenect2/CMakeFiles/cuda_compile_1.dir/src/./cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o
make[2]: *** [CMakeFiles/freenect2.dir/build.make:103: CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:194: CMakeFiles/freenect2.dir/all] Ошибка 2
make: *** [Makefile:149: all] Ошибка 2
Рейтинг:1
флаг in

Я нашел решение, прочитав учебники ниже:

https://linuxconfig.org/how-to-switch-between-multiple-gcc-and-g-compiler-versions-on-ubuntu-20-04-lts-focal-fossa

и :

Как выбрать версию gcc и g++ по умолчанию?

но ошибка отсутствия файла "helper_math.h" сохраняется, поэтому мне нужно начать еще один пост.

флаг cc
helper_math.h находится в образцах cuda. Они установлены в вашей системе?
Рейтинг:0
флаг ir

в общем, я считаю, что лучше всего придерживаться любого из выпусков Ubuntu LTS ... 18.04 или 20.04 и т. д. ... поскольку они, как правило, лучше поддерживаются такими вещами, как драйверы nvidia и т. д.

Итак, я на Ubuntu 20.04, и я установил cuda, сделав это

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

Программное обеспечение и обновления -> Дополнительные драйверы -> выберите Nouveau

cd /var/crash # удалить все файлы здесь

компакт-диск /etc/apt

grep -r cuda * # дает вам, например, файл /etc/apt/sources.list.d/cuda-ubuntu2004-11-6-local.list

теперь удалите любой файл, возвращенный вышеуказанной командой, или просто закомментируйте все строки внутри указанного файла (файлов)

перезагрузка

Теперь установите cuda (он автоматически установит соответствующие драйверы nvidia, НО вы должны начать с использования Nouveau)

https://developer.nvidia.com/cuda-downloads Linux -> x86_64 -> Ubuntu -> 20.04 -> deb (локальный)

выше приводит вас к ссылке

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

выше просто показывает вам, ниже которого вы затем выдаете себя

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin

sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-ubuntu2004-11-6-local_11.6.0-510.39.01-1_amd64.deb


sudo dpkg -i cuda-repo-ubuntu2004-11-6-local_11.6.0-510.39.01-1_amd64.deb


sudo apt-key добавить /var/cuda-repo-ubuntu2004-11-6-local/7fa2af80.pub


sudo apt-получить обновление


sudo apt-get -y установить cuda

перезагрузка

nvidia-smi
Пн Янв 17 13:20:46 2022       
+--------------------------------------------- ----------------------------+
| NVIDIA-SMI 510.39.01 Версия драйвера: 510.39.01 Версия CUDA: 11.6 |
|-------------------------------+---------------- -----+----------------------+
| Имя GPU Persistence-M| Bus-Id Disp.A | Летучий некорр. ЕСК |
| Мощность вентилятора Temp Perf:Использование/Ограничение| Использование памяти | GPU-Util Compute M. |
| | | МИГ М. |
|===============================+================= =====+======================|
| 0 NVIDIA GeForce ... Вкл. | 00000000:02:00.0 Вкл. | Н/Д |
| 0% 56C P0 29 Вт / 190 Вт | 1362 МБ / 6144 МБ | 25% по умолчанию |
| | | Н/Д |
+---------------------------------------------+---------------- -----+----------------------+
                                                                               
+--------------------------------------------- ----------------------------+
| Процессы: |
| GPU GI CI PID Тип Имя процесса Память GPU |
| ID Использование ID |
|================================================ =============================|
| 0 Н/Д Н/Д 1280 G /usr/lib/xorg/Xorg 101MiB |
| 0 Н/Д Н/Д 1965 G /usr/lib/xorg/Xorg 656MiB |
| 0 Н/Д Н/Д 2110 G /usr/bin/gnome-shell 82MiB |
| 0 Н/Д Н/Д 2493 G ...AAAAAAAAAA= --shared-files 19MiB |
| 0 Н/Д Н/Д 4865 G ...167530988844266480,131072 19МиБ |
| 0 Н/Д Н/Д 6981 G ...axaca/src/firefox/firefox 230 МБ |
| 0 Н/Д Н/Д 8585 G ...AAAAAAAAAA= --shared-files 39MiB |
| 0 Н/Д Н/Д 10141 G ...AAAAAAAAAA= --shared-files 68MiB |
| 0 Н/Д Н/Д 10638 G ...AAAAAAAAAA= --shared-files 114МиБ |
+--------------------------------------------- ----------------------------+

nvcc --версия

nvcc: драйвер компилятора NVIDIA (R) Cuda
Авторское право (c) 2005-2021 Корпорация NVIDIA
Дата сборки: пт_дек_17_18:16:03_PST_2021
Инструменты компиляции Cuda, выпуск 11.6, V11.6.55
Сборка cuda_11.6.r11.6/compiler.30794723_0

cat proc/драйвер/nvidia/версия

Версия NVRM: модуль ядра NVIDIA UNIX x86_64 510.39.01, пятница, 31 декабря, 11:03:22 UTC 2021
Версия GCC: версия gcc 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04) 

Как только вы сделаете выше, ваш репозиторий git компилируется нормально, как показано ниже.

gcc --версия

gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0 Авторское право (C) 2019 Free Software Foundation, Inc. Это бесплатное программное обеспечение; см. источник условий копирования. Здесь нет гарантия; даже не для КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.

г++ --версия

g++ (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0 Авторское право (C) 2019 Free Software Foundation, Inc. Это бесплатное программное обеспечение; см. источник условий копирования. Здесь нет гарантия; даже не для КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.

oaxaca@wasayama ~/src/doitt/github.com/OpenKinect/libfreenect2/build $ cmake .. 
-- Идентификация компилятора C: GNU 9.4.0.
-- Идентификация компилятора CXX: GNU 9.4.0.
-- Проверить работоспособность компилятора C: /usr/bin/cc
-- Проверить работоспособность компилятора C: /usr/bin/cc -- работает
-- Обнаружение информации ABI компилятора C
-- Обнаружение информации ABI компилятора C - сделано
-- Обнаружение особенностей компиляции C
-- Обнаружение особенностей компиляции C - готово
-- Проверить работоспособность компилятора CXX: /usr/bin/c++
-- Проверить работоспособность компилятора CXX: /usr/bin/c++ -- работает
-- Обнаружение информации ABI компилятора CXX
-- Обнаружение информации ABI компилятора CXX - сделано
-- Обнаружение функций компиляции CXX
-- Обнаружение функций компиляции CXX - готово
-- использование tinythread в качестве библиотеки потоков
-- Найден PkgConfig: /usr/bin/pkg-config (найдена версия "0.29.1") 
-- Проверка модуля 'libusb-1.0>=1.0.20'
-- Найден libusb-1.0, версия 1.0.23
-- Проверка наличия модулей 'libva;libva-drm'
-- Найдена libva, версия 1.7.0
-- Найдена libva-drm, версия 1.7.0
-- Найден JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (найдена версия "80") 
-- НЕ удалось найти TegraJPEG (отсутствует: TegraJPEG_LIBRARIES TegraJPEG_INCLUDE_DIRS TegraJPEG_WORKS) 
-- Выполнение теста TURBOJPEG_WORKS
-- Выполнение теста TURBOJPEG_WORKS - Успех
-- Найдено TurboJPEG: /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0  
-- Проверка модуля 'glfw3'
-- Найден glfw3, версия 3.3.2
Предупреждение CMake (dev) в /usr/share/cmake-3.16/Modules/FindOpenGL.cmake:275 (сообщение):
  Политика CMP0072 не задана: FindOpenGL по умолчанию предпочитает GLVND, когда
  имеется в наличии. Запустите «cmake --help-policy CMP0072», чтобы узнать подробности политики. Использовать
  cmake_policy для установки политики и подавления этого предупреждения.

  FindOpenGL нашел обе устаревшие библиотеки GL:

    OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so

  и библиотеки GLVND для OpenGL и GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so

  OpenGL_GL_PREFERENCE не был установлен в «GLVND» или «LEGACY», поэтому для
  совместимость с CMake 3.10 и ниже будет использоваться устаревшая библиотека GL.
Стек вызовов (сначала самый последний вызов):
  CMakeLists.txt: 269 (FIND_PACKAGE)
Это предупреждение для разработчиков проекта. Используйте -Wno-dev, чтобы подавить его.

-- Найден OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so   
-- Ищем CL_VERSION_2_0
-- Ищу CL_VERSION_2_0 - нашел
-- Найден OpenCL: /usr/lib/x86_64-linux-gnu/libOpenCL.so (найдена версия "2.0") 
-- Выполнение теста OpenCL_C_WORKS
-- Выполнение теста OpenCL_C_WORKS - Успех
-- Выполнение теста OpenCL_CXX_WORKS
-- Выполнение теста OpenCL_CXX_WORKS – Успех
-- Ищем pthread.h
-- Ищем pthread.h - найдено
-- Выполнение теста CMAKE_HAVE_LIBC_PTHREAD
-- Выполнение теста CMAKE_HAVE_LIBC_PTHREAD - Ошибка
-- Ищем pthread_create в pthreads
-- Ищем pthread_create в pthreads - не найдено
-- Ищем pthread_create в pthread
-- Ищем pthread_create в pthread - найдено
-- Найдено тем: ИСТИНА  
-- Найдена CUDA: /usr/local/cuda (найдена версия "11.6") 
-- Выполнение теста COMPILER_HAS_HIDDEN_VISIBILITY
-- Выполнение теста COMPILER_HAS_HIDDEN_VISIBILITY - Успех
-- Выполнение теста COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Выполнение теста COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Успех
-- Выполнение теста COMPILER_HAS_DEPRECATED_ATTR
-- Выполнение теста COMPILER_HAS_DEPRECATED_ATTR - Успех
-- Связывание с этими библиотеками: 
 /usr/lib/x86_64-linux-gnu/libusb-1.0.so
 пнить
 ва-дрм
 ва
 /usr/lib/x86_64-linux-gnu/libjpeg.so
 /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0
 /usr/lib/x86_64-linux-gnu/libglfw.so
 /usr/lib/x86_64-linux-gnu/libGL.so
 /usr/lib/x86_64-linux-gnu/libOpenCL.so
 /usr/local/cuda/lib64/libcudart_static.a
 -lpthread
 дл
 /usr/lib/x86_64-linux-gnu/librt.so
-- Найден Doxygen: /usr/bin/doxygen (найдена версия "1.8.17") найдены компоненты: doxygen dot 
-- Примеры настройки
-- Использование цели freenect2 в дереве
-- Проверка модуля 'libopenni2'
-- Найден libopenni2, версия 2.2.0.3
-- Найден OpenNI2: /usr/lib  
-- Список возможностей:
-- CUDA да
-- CXX11 отключен
-- Примеры да
-- OpenCL да
-- OpenGL да
-- OpenNI2 да
-- TegraJPEG нет
-- Пронизывание крошечной нити
-- ТурбоJPEG да
-- ВААПИ да
-- VideoToolbox нет (только для Apple)
-- streamer_recorder отключен
-- Настройка выполнена
-- Генерация завершена
-- Файлы сборки были записаны в: /home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/build

Где находится файл helper_math.h?

oaxaca@wasayama ~/src/doitt/github.com/OpenKinect/libfreenect2/build $ make -j16
Сканирование зависимостей целевого объекта generate_resources_tool
[ 3%] Создание объекта CXX CMakeFiles/generate_resources_tool.dir/tools/generate_resources.cpp.o
[ 6%] Связывание исполняемого файла CXX/generate_resources_tool
[ 6%] Встроенная цель generate_resources_tool
[ 15%] Создание resources.inc.h
[ 15%] Создание объекта NVCC (устройство) CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o
[ 15%] Создание объекта NVCC (устройство) CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_depth_packet_processor.cu.o
/home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/src/cuda_depth_packet_processor.cu:31:10: фатальная ошибка: helper_math.h: нет такого файла или каталога
   31 | #include <helper_math.h>
      | ^~~~~~~~~~~~~~~
компиляция прекращена.
/home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/src/cuda_kde_depth_packet_processor.cu:39:10: фатальная ошибка: helper_math.h: нет такого файла или каталога
   39 | #include <helper_math.h>
      | ^~~~~~~~~~~~~~~
компиляция прекращена.
Ошибка CMake на cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o.RelWithDebInfo.cmake:220 (сообщение):
  Генерация ошибки
  /home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/build/CMakeFiles/cuda_compile_1.dir/src/./cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o

Ошибка CMake на cuda_compile_1_generated_cuda_depth_packet_processor.cu.o.RelWithDebInfo.cmake:220 (сообщение):
  Генерация ошибки
  /home/oaxaca/src/doitt/github.com/OpenKinect/libfreenect2/build/CMakeFiles/cuda_compile_1.dir/src/./cuda_compile_1_generated_cuda_depth_packet_processor.cu.o



make[2]: *** [CMakeFiles/freenect2.dir/build.make:84: CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_kde_depth_packet_processor.cu.o] Ошибка 1
make[2]: *** Ожидание незавершенных заданий....
make[2]: *** [CMakeFiles/freenect2.dir/build.make:77: CMakeFiles/cuda_compile_1.dir/src/cuda_compile_1_generated_cuda_depth_packet_processor.cu.o] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:118: CMakeFiles/freenect2.dir/all] Ошибка 2
make: *** [Makefile:130: all] Ошибка 2
флаг in
спасибо, но я не могу следовать вашему уроку. Вы использовали более низкую версию Ubuntu, чем моя, с более низким драйвером nvidia и более низкой версией gcc. Это означает, что я должен воссоздать все заново. Не хорошая идея. Я хочу сохранить Ubuntu 21.10 в качестве основной ОС. Возможно, я могу принять удаление/обновление (старых) драйверов Ubuntu и (переустановку/обновление) библиотек cuda.
Scott Stensland avatar
флаг ir
@Marietto Я попробую сегодня вечером на другом ноутбуке, который использует Ubuntu 22.04.
флаг in
можно попробовать с ubuntu 21.10? это моя версия. если вы используете 22.04, я не могу быть уверен, что он работает так же, когда я повторяю ваши шаги.
Scott Stensland avatar
флаг ir
@Marietto Где живет файл helper_math.h? см. выше ошибка компиляции
флаг in
Я установил gcc9 и использовал по умолчанию: https://pastebin.ubuntu.com/p/d49QPgG6WY/; все еще не работает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.