c++ - Nsight Eclipse 找不到共享库

标签 c++ eclipse cuda nsight

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

我已将测试项目的包含路径设置为我的 foo 的 src 目录,测试应用程序正在请求正确的库名称,并且 foo/Debug 的路径是正确的。我的流程基于 this posting 中的说明.

我已验证 foo 正在生成共享库工件,并且检查了 -fPIcflags。

我可以编译这两个项目,所以看起来设置确实是正确的,但是当我实际尝试运行测试项目时,我收到消息“加载共享库时出错: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,它应该也能找到它。

这没有多大意义:

I have tried changing foo to be a static library too, but that yields the same error message.

静态库永远不会被动态加载,即使它位于“正确”路径上也是如此。

关于c++ - Nsight Eclipse 找不到共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26308867/

相关文章:

c++ - 当我想发送 "num8"时,SendInput 发送 "vk_up"?怎么会?

c - 使用 Eclipse IDE 作为我的编程语言的文本编辑器

Cuda:查明指针是设备指针还是主机指针

cuda - 如何使用CUPTI读取功耗?

c++ - 使用 Stitcher 的 OpenCV 断言失败

c++ - 类的链接器错误使用了它扩展的类中的方法

c++ - GoogleMock 显示更详细的调试信息

android - 从 svn 错误结帐

java - 即使在运行配置中指定,Eclipse 也无法找到 adb

cuda - 如何释放 device_vector<int>