Nsight Eclipse找不到共享库

Nsight Eclipse unable to find shared library

本文关键字:共享 找不到 Eclipse Nsight      更新时间:2023-10-16

我正在使用NSight Eclipse创建一个类库,这些类具有CUDA加速类,旨在由第三方应用程序扩展和使用。让我们把我的项目称为"foo"。我想通过在一个单独的项目中编写一个第三方应用程序来测试foo,包括我的测试应用程序,并运行它。然而,当我这样做时,测试应用程序无法找到foo共享库文件。

我已经将测试项目的include路径设置为我的foo的src目录,测试应用程序正在请求正确的库名称,并且foo/Debug的路径是正确的。我的流程是基于这篇帖子中的说明。

我已经验证了foo正在生成一个共享库工件,并且检查了-fPIC标志。

我可以编译这两个项目,所以看起来设置确实是正确的,但当我实际尝试运行测试项目时,我收到消息"加载共享库时出错:foo.so:无法打开共享对象文件:没有这样的文件或目录"。但是当我查看foo/Debug目录时,我可以在那里看到文件libfoo.so。

我也尝试过将foo更改为静态库,但这会产生相同的错误消息。

发生了什么事,我能做些什么来解决它?

谢谢你的帮助。

Linux通常不会加载用户创建的共享库,除非该库位于LD_LIBRARY_PATH环境变量中包含的路径上。

将有问题的库路径添加到LD_LIBRARY_PATH环境变量中以解决此问题。

使用bash/sh可以:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/my/library.so

此时,作为测试,从命令行运行程序。现在应该可以找到图书馆了。

然后你可以启动Nsight EE,它也应该找到它。

这没有多大意义:

我也尝试过将foo更改为静态库,但这会产生相同的错误消息。

静态库永远不会被动态加载,即使它在"正确"的路径上。

不幸的是,更改LD_LIBRARY_PATH对问题没有任何影响。这可能会使操作系统知道额外的位置,但不会使NSight知道。

对我来说,最终起作用的是在项目的根目录中向共享库添加一个符号链接。即ln -s ~/path/to/foo.so foo.so和现在的foo.so可以直接用于我的项目,即使我稍后重新编译foo。

这仍然感觉有点像黑客,但至少我可以继续发展。。。

我试图解决同样的问题。在我的配置中,我的项目位于同一个工作区,我试图将它们全部链接到一个项目中。

对我来说,解决方案是为每个项目添加引用。那就是:属性->路径和符号->引用选项卡

然后只需检查工作空间中您需要的项目。