CUDA отсутствует libGL.so libGLU.so и libX11.so
Это стандартная проблема, с которой люди сталкивались, но я не могу заставить ее работать. Я на Linux Mint 17.3 и сделал установку через репо. Когда я пытаюсь скомпилировать каталог 5_Simulations (на самом деле, fluidsGL), я получаю следующие ошибки:
>>> WARNING - libGL.so not found, refer to CUDA Getting Started Guide for how to find and install them. <<<
>>> WARNING - libGLU.so not found, refer to CUDA Getting Started Guide for how to find and install them. <<<
>>> WARNING - libX11.so not found, refer to CUDA Getting Started Guide for how to find and install them. <<<
Тем не менее, они существуют в системе, например:
[name@host: fluidsGL]$ locate libGL.so
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/nvidia-352/libGL.so
/usr/lib/nvidia-352/libGL.so.1
/usr/lib/nvidia-352/libGL.so.352.68
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/x86_64-linux-gnu/mesa/libGL.so
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib32/nvidia-352/libGL.so
/usr/lib32/nvidia-352/libGL.so.1
/usr/lib32/nvidia-352/libGL.so.352.6
Даже символическая ссылка на /usr/lib/libGL.so с версией nvidia-352 не работает. У кого-нибудь была эта конкретная проблема? Я пытаюсь не испортить компьютер, потому что у меня возникли проблемы с драйверами, внезапно не работающими, когда я начал возиться с такими вещами.
2 ответа
Linux Mint не является официально поддерживаемым дистрибутивом для CUDA. Поэтому вполне возможно, что используемый вами метод установки CUDA (в данном случае это часть установки драйвера) помещает необходимые библиотеки GL в место, которое make-файл не может найти.
Если вы изучаете findgllib.mk
"вспомогательный" файл makefile в каталоге сборки, я подозреваю, что дистрибутив на основе Debian будет следовать UBUNTU
путь в этом .mk
файл. Для ветвей не-ppc и non-arm вы найдете такие определения:
ifeq ("$(UBUNTU)","0")
ifeq ...
...
else
GLPATH ?= /usr/lib/$(UBUNTU_PKG_NAME)
GLLINK ?= -L/usr/lib/$(UBUNTU_PKG_NAME)
DFLT_PATH ?= /usr/lib
При условии:
- Вы заявили, что библиотеки GL, похоже, установлены.
- Вы вставили ссылки на эти библиотеки в каталог /usr/lib
- Определение GLPATH в
.mk
файл является "не переопределенным" определением (т.е.?=
)
мы можем "переопределить" или заменить определение GLPATH, придуманное make-файлом, на "заведомо удачное" одно из /usr/lib
с:
GLPATH=/usr/lib
приурочен к вашему make
команда.
Для простого Debian вы можете использовать следующее:
…
SUSE = $(shell echo $(DISTRO) | grep -i 'suse\|sles' >/dev/null 2>&1; echo $$?)
DEBIAN = $(shell echo $(DISTRO) | grep -i debian >/dev/null 2>&1; echo $$?)
ifeq ("$(UBUNTU)","0")
…
…
ifeq ("$(CENTOS)","0")
GLPATH ?= /usr/lib64/nvidia
GLLINK ?= -L/usr/lib64/nvidia
DFLT_PATH ?= /usr/lib64
endif
ifeq ("$(DEBIAN)","0")
GLPATH ?= /usr/lib/x86_64-linux-gnu
GLLINK ?= -L/usr/lib/x86_64-linux-gnu
DFLT_PATH ?= /usr/lib64
endif
# find libGL, libGLU
…
в вашем cuda-samples/common/findgllib.mk
, затем введите cuda-samples
и выполнить for f in $(find ?_* -name findgllib.mk); do cp -bv common/findgllib.mk $f; done
использовать этот файл для каждого образца GL
Та же проблема возникает со мной, и я попробовал все, включая установку драйвера, но когда я смотрел make-файл (.mk), указана версия графического драйвера, и он проверяет имя дистрибутива ОС, например (Ubuntu, fedora и т. д.), когда я использовал Zorin, так что не удалось найти путь, назначенный для переменных. поэтому после изменений майнера он работает успешно. Я надеюсь, что это поможет.
Изменения были:
// какая у тебя версия
UBUNTU_PKG_NAME = "nvidia-375"
// добавить имя дистрибутива в этот список
ifeq (,$(filter $(DISTRO),ubuntu zorin fedora red rhel centos suse))
DISTRO =
endif
// добавить эту строку для конкретного дистрибутива
ZORIN = $(shell echo $(DISTRO) | grep -i zorin >/dev/null 2>&1; echo $$?)
// копировать и вставлять тот же код, который есть для Ubuntu в файл для указанного дистрибутива, если это необходимо
ifeq ("$(ZORIN)","0")
ifeq ($(HOST_ARCH)-$(TARGET_ARCH),x86_64-armv7l)
GLPATH := /usr/arm-linux-gnueabihf/lib
GLLINK := -L/usr/arm-linux-gnueabihf/lib
ifneq ($(TARGET_FS),)
GLPATH += $(TARGET_FS)/usr/lib/$(UBUNTU_PKG_NAME)
GLPATH += $(TARGET_FS)/usr/lib/arm-linux-gnueabihf
GLLINK += -L$(TARGET_FS)/usr/lib/$(UBUNTU_PKG_NAME)
GLLINK += -L$(TARGET_FS)/usr/lib/arm-linux-gnueabihf
endif
else ifeq ($(HOST_ARCH)-$(TARGET_ARCH),x86_64-ppc64le)
GLPATH := /usr/powerpc64le-linux-gnu/lib
GLLINK := -L/usr/powerpc64le-linux-gnu/lib
else
GLPATH ?= /usr/lib/$(UBUNTU_PKG_NAME)
GLLINK ?= -L/usr/lib/$(UBUNTU_PKG_NAME)
DFLT_PATH ?= /usr/lib
endif
endif