什么是LD_LIBRARY_PATH以及如何使用它?

kar*_*rla 37 c++ java environment-variables jacob

我参与开发一个使用一些C++组件的Java项目,因此我需要Jacob.dll.(在Windows 7上)

java.lang.UnsatisfiedLinkError: no JacobDB in java.library.path无论我把Jacob.dll放在哪里,我都会一直在......

我寻找可能的决定,到目前为止我没有尝试过的是设置LD_LIBRARY_PATH变量,指向.dll文件.

我没什么经验,我不熟悉该变量的含义和用法 - 你能帮帮我吗?

Alo*_*ave 62

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
Run Code Online (Sandbox Code Playgroud)

既然你说说.dll你是在Windows系统上和.dll必须被放置在该链接时链接器的搜索,在窗口此路径由环境变量设置的路径PATH,所以添加.dllPATH它应该工作的罚款.


Hen*_*olm 19

通常,您必须java.library.path在JVM的命令行上进行设置:

java -Djava.library.path=/path/to/my/dll -cp /my/classpath/goes/here MainClass
Run Code Online (Sandbox Code Playgroud)

  • 嗯......但...... LD_LIBRARY_PATH是什么? (9认同)

Mar*_*man 10

LD_LIBRARY_PATH是特定于Linux的,是一个环境变量,指向动态加载程序应查找共享库的目录.

尝试添加.dll在PATH变量中的目录.Windows将自动查看此环境变量中的目录listet.LD_LIBRARY_PATH可能无法解决问题(除非JVM使用它 - 我不知道这一点).

  • 不是Linux !! 所有Unix都使用这个环境变量!它也不是用于链接,而是用于加载!静态链接库通常在命令行上提供给链接器,动态加载的库通过LD_LIBRARY_PATH查找.参见例如http://linuxmafia.com/faq/Admin/ld-lib-path.html (3认同)