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。
这仍然感觉有点像黑客,但至少我可以继续发展。。。
我试图解决同样的问题。在我的配置中,我的项目位于同一个工作区,我试图将它们全部链接到一个项目中。
对我来说,解决方案是为每个项目添加引用。那就是:属性->路径和符号->引用选项卡
然后只需检查工作空间中您需要的项目。
- 运行程序时找不到共享对象库,但在编译过程中链接了它
- 项目 A 依赖共享库 B,B 依赖 C,A 不依赖 C。当我使用 B 的 API 时,警告 B 找不到 C
- 运行可执行文件时找不到共享库,即使共享库存在于指定的路径中
- Ogre 3D共享库与CMAKE链接时,在Linux上执行二进制时找不到
- Visual Studio共享库(Android,iOS)标题在Mac上找不到
- Qt应用程序在运行时找不到共享库
- CMAKE链接在Windows上共享库(LIB),但找不到DLL
- 在运行时找不到共享对象.克尔普克
- 即使定义了搜索路径,也找不到自定义共享库
- 我的交叉编译器找不到共享库
- 我可以在libleveldb.a中找到符号,但是当我创建共享库时,找不到相同的符号。
- SFML2 应用程序找不到共享对象
- Linux-找不到共享库
- GNU Linker 找不到本地共享库
- 将共享库与dlopen一起使用-共享对象找不到加载程序导出的符号
- 在交叉编译、Ubuntu到Beaglebone之后,在目标上找不到共享库
- C++/Eclipse共享库:为什么g++找不到这个库
- Ctypes 在使用 CMake 创建的共享库中找不到符号
- 即使我修改了LD_LIBRARY_PATH,也找不到我的共享库
- 在 Boost 中找不到共享库 (Linux Mint)