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”。如下图所示:
确定显卡驱动情况
这个问题大概率是由于显卡驱动存在问题,如果你安装完ubuntu,没有动过显卡驱动,大概率是识别不了电脑上显卡的。可以通过命令 nvidia-smi
来进行判断。如果驱动正常识别,会显示当前显卡使用情况等信息,如图所示。
或者使用 nvidia-settings
命令,会打开显卡设置的界面,界面上能看到识别出的显卡型号。
如果不正常,则运行 nvidia-smi
会报错。这种情况可以参考 这个博客 重新安装显卡驱动。
驱动能识别显卡情况下仍有该问题
部分情况下,驱动已经顺利安装,并且可以正确识别到显卡,运行程序仍然报错。则运行 vulkaninfo 命令查看当前系统vulkan的信息,可以看到有报错 libGLX_nvidia.so.0找不到 。
然后我们在系统中搜索libGLX_nvidia.so.0确定下是不存在还是找的库路径有问题。
可以看到系统中本就不存在该库文件。但这个库是显卡驱动附带的,所以可能是显卡驱动安装时,没有安装该库文件。先解压安装的显卡驱动*.run文件,解压命令为 *.run -x
解压后,可以看到libGLX_nvidia库文件
用ldd
命令查看该库文件依赖哪些库
然后将这些库一并拷贝到 /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
再次执行,依然报错缺少库文件。
我们按照同样的方式,继续拷贝该库文件到对应路径。再次执行 vulkaninfo
,可以正常打印vulkan信息。然后重新运行之前无法打开的UE打包后工程,可以正常运行。