System.loadLibrary()调用的库类型有哪些?附Windows平台代码片段
关于System.loadLibrary()支持的库类型解答
嘿,结合你贴的那段Windows平台的源码片段,我来给你唠唠System.loadLibrary()能加载的库类型——不同操作系统对应的格式不一样哦:
- Windows 系统:对应你代码里的
LIBWINPTHREAD-1这类,实际加载的是*.dll格式的动态链接库。你调用的时候不用写.dll后缀,JVM会自动帮你补上——比如你写System.loadLibrary("LIBWINPTHREAD-1"),JVM会自动去找LIBWINPTHREAD-1.dll文件。 - Linux/Unix 类系统:加载的是
*.so格式的共享对象文件。同样不用写后缀,比如要加载libfoo.so,只需要调用System.loadLibrary("foo")就行(注意这里库名的前缀libJVM也会自动处理)。 - macOS 系统:主要加载
*.dylib格式的动态库,旧版本也支持*.jnilib格式。比如加载libbar.dylib,调用时写System.loadLibrary("bar")就可以了。
另外小补充:JVM会遵循当前系统的库搜索路径去查找这些文件,比如Windows看PATH环境变量,Linux看LD_LIBRARY_PATH,macOS看DYLD_LIBRARY_PATH,所以要确保你的库文件在这些路径里,或者提前配置好路径。
内容的提问来源于stack exchange,提问作者Luca Muscat
相关产品推荐
相关产品推荐

