【发布时间】:2012-02-01 16:25:20
【问题描述】:
我正在尝试在 Debian Linux(32 位)中运行 JCuda 示例。由于 JCuda 网站上没有适用于 Linux x86 的二进制文件,因此我编译了这些库。现在我正在尝试运行 DeviceQuery 示例,但出现以下错误:
使用基本名称“JCudaDriver”加载本机库“JCudaDriver-linux-x86”时出错 操作系统名称:Linux 架构:i386 架构位大小:32 尝试将库作为资源加载的堆栈跟踪: java.lang.NullPointerException:找不到名为“/lib/libJCudaDriver-linux-x86.so”的资源 在 jcuda.LibUtils.loadLibraryResource(LibUtils.java:144) 在 jcuda.LibUtils.loadLibrary(LibUtils.java:80) 在 jcuda.driver.JCudaDriver.(JCudaDriver.java:192) 在 jcudatest.JCudaTest.main(JCudaTest.java:29) 尝试将库作为文件加载的堆栈跟踪: java.lang.UnsatisfiedLinkError:/home/rui/Downloads/JCuda-All-0.4.0-beta1-src/JCudaDriverJNI/lib/libJCudaDriver-linux-x86.so:/home/rui/Downloads/JCuda-All-0.4。 0-beta1-src/JCudaDriverJNI/lib/libJCudaDriver-linux-x86.so:未定义符号:Pointer_buffer 在 java.lang.ClassLoader$NativeLibrary.load(Native Method) 在 java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807) 在 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732) 在 java.lang.Runtime.loadLibrary0(Runtime.java:823) 在 java.lang.System.loadLibrary(System.java:1028) 在 jcuda.LibUtils.loadLibrary(LibUtils.java:90) 在 jcuda.driver.JCudaDriver.(JCudaDriver.java:192) 在 jcudatest.JCudaTest.main(JCudaTest.java:29) 线程“主”java.lang.UnsatisfiedLinkError 中的异常:无法加载本机库 在 jcuda.LibUtils.loadLibrary(LibUtils.java:122) 在 jcuda.driver.JCudaDriver.(JCudaDriver.java:192) 在 jcudatest.JCudaTest.main(JCudaTest.java:29) Java 结果:1我相信这里的错误与那个未定义的符号 Pointer_buffer 有关,因为我在 /lib 上创建了符号链接,并且这个文件夹在 PATH 变量上(我可以看到它解析到 /home/rui/Downloads/JCuda- 的符号链接All-0.4.0-beta1-src/JCudaDriverJNI/lib/libJCudaDriver-linux-x86.so 就像它应该的那样)。
一切都可以使用 Cuda,因为我可以编译和运行 Cuda 示例。 Cuda 版本是 4.0.17 和 JCuda 0.4.0-beta1(从 JCuda 网站我可以看到 Version 0.4.0-beta1。这些库是为 CUDA 4.0(build 17)编译的所以我想我这里也没有任何不兼容性)。
我正在 Netbeans 上设置我的项目,并且已经包含了 JcudaJava 文件夹中的源文件。我是否需要包含 JCudaDriverJNI 和 JCudaRuntimeJNI 文件夹中的 cpp 和 hpp 文件(我以前从未使用过 JNI,真的不知道我需要包含什么)。
提前致谢,
瑞
【问题讨论】:
标签: java cuda java-native-interface