繁体   English   中英

Nsight Eclipse无法找到共享库

[英]Nsight Eclipse unable to find shared library

我正在使用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。

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

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

我的解决方案是为每个项目添加参考。 那就是:Properties-> Paths and Symbols-> References选项卡

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM