ubuntu下运行UE打包的工程,出现“Cannot find a compatible Vulkan device or driver”报错的解决方案

  • 问题描述
  • 确定显卡驱动情况
  • 驱动能识别显卡情况下仍有该问题

问题描述

在ubuntu18.04系统中使用微软AirSim提供的Linux下场景程序时,运行报错,提示:“Cannot find a compatible Vulkan device or driver.Try updating your video driver to a more recent version and make sure your video card supports Vulkan”。如下图所示:

你的Android设备不支持USB主机模式 你的设备不支持vulkan_ubuntu

确定显卡驱动情况

这个问题大概率是由于显卡驱动存在问题,如果你安装完ubuntu,没有动过显卡驱动,大概率是识别不了电脑上显卡的。可以通过命令 nvidia-smi 来进行判断。如果驱动正常识别,会显示当前显卡使用情况等信息,如图所示。

你的Android设备不支持USB主机模式 你的设备不支持vulkan_运维_02

或者使用 nvidia-settings 命令,会打开显卡设置的界面,界面上能看到识别出的显卡型号。

你的Android设备不支持USB主机模式 你的设备不支持vulkan_库文件_03

如果不正常,则运行 nvidia-smi 会报错。这种情况可以参考 这个博客 重新安装显卡驱动。

驱动能识别显卡情况下仍有该问题

部分情况下,驱动已经顺利安装,并且可以正确识别到显卡,运行程序仍然报错。则运行 vulkaninfo 命令查看当前系统vulkan的信息,可以看到有报错 libGLX_nvidia.so.0找不到

你的Android设备不支持USB主机模式 你的设备不支持vulkan_显卡驱动_04


然后我们在系统中搜索libGLX_nvidia.so.0确定下是不存在还是找的库路径有问题。

你的Android设备不支持USB主机模式 你的设备不支持vulkan_linux_05


可以看到系统中本就不存在该库文件。但这个库是显卡驱动附带的,所以可能是显卡驱动安装时,没有安装该库文件。先解压安装的显卡驱动*.run文件,解压命令为 *.run -x

你的Android设备不支持USB主机模式 你的设备不支持vulkan_显卡驱动_06

解压后,可以看到libGLX_nvidia库文件

你的Android设备不支持USB主机模式 你的设备不支持vulkan_运维_07

ldd命令查看该库文件依赖哪些库

你的Android设备不支持USB主机模式 你的设备不支持vulkan_ubuntu_08

然后将这些库一并拷贝到 /usr/lib/x86_64-linux-gnu/ 路径下

cp libGLX_nvidia.so.515.65.01 /usr/lib/x86_64-linux-gnu/
cp libnvidia-glsi.so.515.65.01 /usr/lib/x86_64-linux-gnu/
cp libnvidia-tls.so.515.65.01 /usr/lib/x86_64-linux-gnu/
cp libnvidia-glcore.so.515.65.01 /usr/lib/x86_64-linux-gnu/

因为vulkaninfo中找的库是libGLX_nvidia.so.0,所以拷贝后我们使用 ln 命令创建软链接

ln -s /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.515.65.01 /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.0

再次执行,依然报错缺少库文件。

你的Android设备不支持USB主机模式 你的设备不支持vulkan_linux_09

我们按照同样的方式,继续拷贝该库文件到对应路径。再次执行 vulkaninfo ,可以正常打印vulkan信息。然后重新运行之前无法打开的UE打包后工程,可以正常运行。

你的Android设备不支持USB主机模式 你的设备不支持vulkan_库文件_10