CUDA缺少libGL.so libGLU.so和libX11.so

时间:2016-01-05 17:03:31

标签: opengl cuda linuxmint

这是人们遇到的标准问题,但我无法让它发挥作用。我是Linux Mint 17.3并通过repo进行安装。当我尝试编译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

即使使用nvidia-352版本与/usr/lib/libGL.so进行符号链接也无法正常工作。有没有人有这个特殊问题?我试图不搞砸计算机,因为当我开始搞乱这类东西时,我的司机突然不能正常工作。

3 个答案:

答案 0 :(得分:9)

Linux Mint不是officially supported distro for CUDA。因此,您正在使用的CUDA安装方法(在本例中为驱动程序安装部分)可能会将必要的GL库放在makefile无法找到的位置。

如果你研究findgllib.mk makefile&#34; helper&#34;在构建目录中的文件,我怀疑基于debian的分发将遵循UBUNTU文件中的.mk路径。对于非ppc和非arm分支,您将找到如下定义:

ifeq ("$(UBUNTU)","0")
  ifeq ...
  ...
  else
    GLPATH    ?= /usr/lib/$(UBUNTU_PKG_NAME)
    GLLINK    ?= -L/usr/lib/$(UBUNTU_PKG_NAME)
    DFLT_PATH ?= /usr/lib

鉴于:

  1. 您已声明GL库似乎已安装。
  2. 您已将这些库符号链接到/ usr / lib目录
  3. .mk文件中的GLPATH定义是&#34;非覆盖&#34;定义(即?=
  4. 我们可以&#34;覆盖&#34;或者将生成文件所编制的GLPATH定义替换为&#34;已知商品&#34; /usr/lib中的一个:

    GLPATH=/usr/lib
    

    预先加载到make命令。

答案 1 :(得分:0)

同样的问题发生在我身上,我尝试了所有包括驱动程序安装,但当我看到makefile(.mk)时,指定了图形驱动程序版本,它检查了OS分发名称,如(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

答案 2 :(得分:0)

对于普通的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样本使用该文件