Java JCuda错误:未定义的符号:指针\u缓冲区

Java JCuda错误:未定义的符号:指针\u缓冲区,java,cuda,java-native-interface,Java,Cuda,Java Native Interface,我试图在DebianLinux(32位)中运行一个JCuda示例。由于JCuda网站上没有针对Linux x86的二进制文件,我已经编译了这些库。现在,我尝试运行DeviceQuery示例,但出现以下错误: Error while loading native library "JCudaDriver-linux-x86" with base name "JCudaDriver" Operating system name: Linux Architecture : i386 A

我试图在DebianLinux(32位)中运行一个JCuda示例。由于JCuda网站上没有针对Linux x86的二进制文件,我已经编译了这些库。现在,我尝试运行DeviceQuery示例,但出现以下错误:

Error while loading native library "JCudaDriver-linux-x86" with base name "JCudaDriver" Operating system name: Linux Architecture : i386 Architecture bit size: 32 Stack trace from the attempt to load the library as a resource: java.lang.NullPointerException: No resource found with name '/lib/libJCudaDriver-linux-x86.so' at jcuda.LibUtils.loadLibraryResource(LibUtils.java:144) at jcuda.LibUtils.loadLibrary(LibUtils.java:80) at jcuda.driver.JCudaDriver.(JCudaDriver.java:192) at jcudatest.JCudaTest.main(JCudaTest.java:29) Stack trace from the attempt to load the library as a file: 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: undefined symbol: Pointer_buffer at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1732) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1028) at jcuda.LibUtils.loadLibrary(LibUtils.java:90) at jcuda.driver.JCudaDriver.(JCudaDriver.java:192) at jcudatest.JCudaTest.main(JCudaTest.java:29) Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load the native library at jcuda.LibUtils.loadLibrary(LibUtils.java:122) at jcuda.driver.JCudaDriver.(JCudaDriver.java:192) at jcudatest.JCudaTest.main(JCudaTest.java:29) Java Result: 1 加载基名称为“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) JCudaDriver.JCudaDriver.(JCudaDriver.java:192) 位于jcudatest.jcudatest.main(jcudatest.java:29) 尝试将库作为文件加载时的堆栈跟踪: java.lang.unsatifiedlinkerror:/home/rui/Downloads/JCuda-All-0.4.0-beta1-src/JCudaDriverJNI/lib/libjcadadriver-linux-x86.so:/home/rui/Downloads/JCuda-All-0.4.0-beta1-src/JCudaDriverJNI/libJCudaDriver-linux-x86.so:“未定义符号:指针\缓冲区” 位于java.lang.ClassLoader$NativeLibrary.load(本机方法) 位于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) JCudaDriver.JCudaDriver.(JCudaDriver.java:192) 位于jcudatest.jcudatest.main(jcudatest.java:29) 线程“main”java.lang.UnsatisfiedLinkError中出现异常:无法加载本机库 在jcuda.LibUtils.loadLibrary(LibUtils.java:122) JCudaDriver.JCudaDriver.(JCudaDriver.java:192) 位于jcudatest.jcudatest.main(jcudatest.java:29) Java结果:1 我相信这里的错误与未定义的符号指针_缓冲区有关,因为我在/lib上创建了符号链接,而这个文件夹位于路径变量上(我可以看到它解析到/home/rui/Downloads/JCuda-All-0.4.0-beta1-src/JCudaDriverJNI/lib/libJCudaDriver-linux-x86的符号链接,就像它被假定的那样)
由于我可以编译和运行Cuda示例,因此Cuda的所有功能都可以正常工作。Cuda版本是4.0.17和JCuda 0.4.0-beta1(从JCuda网站上我可以看到版本0.4.0-beta1。这些库是为Cuda 4.0(build 17)编译的,因此我认为我在这里也没有任何不兼容之处)。
我正在Netbeans上设置我的项目,我已经包括了JcudaJava文件夹中的源文件。我是否需要包含JCudaDriverJNI和JCudaRuntimeJNI文件夹中的cpp和hpp文件(我以前从未使用过JNI,不知道需要包含什么)

提前感谢,
Rui

一个“未定义的符号”表示找不到符号(变量、函数)的定义。JCuda在CommonJNI/PointerUtils.cpp中定义了
Pointer\u缓冲区
,因此在.so中包含PointerUtils.o肯定存在一些问题。编译时有错误吗