可以从命令行使用CUDA运行可执行文件,但在调试它们时找不到一些.so文件

问题描述 投票:0回答:1

我已经编写了一个CUDA应用程序,该程序可以编译并运行。但是,如果尝试通过Eclipse CDT或kdbg调试/运行它们,则会收到错误消息,例如:

/path/to/executable: error while loading shared libraries: libnvToolsExt.so.1: cannot open shared object file: No such file or directory

或带有libcudart.so.10.2的类似消息。

如果可执行文件独自运行,为什么会发生这种情况,我该怎么办?

有关我的系统的信息:

  • Debian衍生的GNU / Linux
  • 已手动安装[CUDA 10.2(未安装分发提供的CUDA软件包)
  • Eclipse CDT版本2018-09(4.9.0)
  • kdbg版本2.5.5
  • X86_64机器
cuda shared-libraries eclipse-cdt ld
1个回答
0
投票
显然,通过Eclipse CDT和kdbg(以及可能的其他IDE和调试器)执行更加严格。可用于流程的内容。我猜测环境已经以某种方式进行了清理,因此,如果它具有CUDA库目录的LD_LIBRARY_PATH条目-您在手动安装后可能已添加了该目录-那就消失了。

除了环境,您还可以使用链接器的配置文件指定共享库搜索目录。在Linux上,链接器为GNU ld,其配置文件为/etc/ld.so.conf/etc/ld.so.conf.d/中的文件(在您的系统中为后者)。因此,添加一个名为/etc/ld.so.conf.d/cuda的文件,其内容是带有[missing]库的目录,您可能已经在LD_LIBRARY_PATH中了;在您的系统上,应该是:

/usr/local/cuda-10.2/targets/x86_64-linux/lib

(所以是单行文件。)

这也应该kdbg和Eclipse CDT来调试您的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.