什么是LD_LIBRARY_PATH以及如何使用它
What is LD_LIBRARY_PATH and how to use it?
我参与开发一个Java项目,该项目使用了一些c++组件,因此我需要Jacob.dll
。(在Windows 7上)
我一直得到java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path
无论我把Jacob.dll放到哪里....
我寻找可能的决定和一个,我还没有尝试到目前为止是设置LD_LIBRARY_PATH
变量,指向.dll文件。
我没有什么经验,我不熟悉这个变量的含义和用法,你能帮我吗?
LD_LIBRARY_PATH
是Linux/Unix中预定义的环境变量,它设置链接器在链接动态库/共享库时应该查找的路径。
LD_LIBRARY_PATH
包含一个冒号分隔的路径列表,链接器优先考虑这些路径,而不是标准库路径/lib
和/usr/lib
。标准路径仍然会被搜索,但只有在LD_LIBRARY_PATH
中的路径列表耗尽后才会被搜索。
使用LD_LIBRARY_PATH
的最佳方法是在执行程序之前立即在命令行或脚本中设置它。这样新的LD_LIBRARY_PATH
就与系统的其余部分隔离了。
示例用法:
$ export LD_LIBRARY_PATH="/list/of/library/paths:/another/path"
$ ./program
由于您在windows系统上谈论.dll
,并且.dll
必须放置在链接器在链接时搜索的路径上,在windows中,该路径由环境变量PATH
设置,因此将.dll
添加到PATH
中,它应该工作良好。
通常您必须在JVM的命令行上设置java.library.path
:
java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
LD_LIBRARY_PATH
是特定于Linux的环境变量,它指向动态加载器应该在其中查找共享库的目录。
尝试在PATH变量中添加.dll所在的目录。Windows将自动查找这个环境变量中列出的目录。LD_LIBRARY_PATH
可能不会解决这个问题(除非JVM使用它——我不知道)。
LD_LIBRARY_PATH
是默认的库路径,用于检查可用的动态库和共享库。它是特定于linux发行版的
与windows中的环境变量PATH
类似,链接器在链接期间检查可能的实现。
我的错误也与没有找到服务所需的.so
文件有关。我使用LD_LIBRARY_PATH
变量来优先考虑链接器拾取的路径以搜索所需的库。
我将服务和.so
文件复制到一个文件夹中,并将其输入LD_LIBRARY_PATH
变量
LD_LIBRARY_PATH=. ./service
在同一个文件夹中,我给出了上面的命令,它工作了。
那么,错误消息告诉您该怎么做:将Jacob.dll所在的路径添加到java.library.path。您可以在命令行中这样做:
java -Djava.library.path="dlls" ...
(假设Jacob.dll在"dll "文件夹中)
另见java.lang.UnsatisfiedLinkError no *****.dll in java.library.path
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何强制嵌入式python使用与命令行相同的sys.path?
- 使用std :: filesystem :: path中的double
- 使用谷歌测试编译程序时"g++ is not a full path"
- 使用std::filesystem::path在分隔符类型之间进行转换
- 如何将 mciSendString("play path",0,0,0) 与 exe path 一起使用?
- 使用 QProcessEnvironment 更改 cmd.exe 的 PATH 环境变量
- 使用 LLVM 的 libc++ 时,__1 符号从何而来?
- 在std::cout之后使用std::cin时,换行符从何而来
- 为什么以及在何处在C++中使用引用和指针
- 如何使用QT设置PATH变量
- 在makefile中使用path包含源文件
- 基例如何影响使用递归函数的哪些行
- 在包括中,如果我使用"test.h"与"path/test.h"相同吗?
- 如何使用Boost在$PATH中找到exe
- 在eclipse CDT中使用不在PATH中的minGW
- 使用filesystem::path,如何以跨平台的方式打开文件
- 在boost::filesystem::path中使用boost::算法