2015-04-23 74 views
1

我是JCuda。我试着在Eclipse上写一个简单的例子Linux。我有这个错误,但我不明白它的意思。下面的代码:在eclipse中执行jcuda程序时出错

import jcuda.Pointer; 
import jcuda.runtime.JCuda; 
public class cudaTest { 
public static 
void main(String[] args) { 
    Pointer pointer = new Pointer(); 
    JCuda.cudaMalloc(pointer, 4); 
    System.out.println("Pointer: " + pointer); 
    JCuda.cudaFree(pointer); 
} 
} 

我添加Jcuda.jar从Java构建路径,并通过选择提取JCuda文件编辑本机库的位置。 错误是:

Error while loading native library "JCudaRuntime-linux-x86_64" with base name "JCudaRuntime" 
Operating system name: Linux 
Architecture   : amd64 
Architecture bit size: 64 
Stack trace from the attempt to load the library as a resource: 
java.lang.NullPointerException: No resource found with name '/lib/libJCudaRuntime-linux-x86_64.so' 
    at jcuda.LibUtils.loadLibraryResource(LibUtils.java:151) 
    at jcuda.LibUtils.loadLibrary(LibUtils.java:83) 
    at jcuda.runtime.JCuda.initialize(JCuda.java:303) 
    at jcuda.runtime.JCuda.<clinit>(JCuda.java:290) 
    at cudaTest.main(cudaTest.java:8) 
Stack trace from the attempt to load the library as a file: 
java.lang.UnsatisfiedLinkError: /home/Faith/JCuda-All-0.4.2-bin-linux-x86_64/libJCudaRuntime-linux-x86_64.so: libcudart.so.4: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965) 
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1890) 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1880) 
    at java.lang.Runtime.loadLibrary0(Runtime.java:849) 
    at java.lang.System.loadLibrary(System.java:1088) 
    at jcuda.LibUtils.loadLibrary(LibUtils.java:94) 
    at jcuda.runtime.JCuda.initialize(JCuda.java:303) 
    at jcuda.runtime.JCuda.<clinit>(JCuda.java:290) 
    at cudaTest.main(cudaTest.java:8) 

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load the native library 
    at jcuda.LibUtils.loadLibrary(LibUtils.java:129) 
    at jcuda.runtime.JCuda.initialize(JCuda.java:303) 
    at jcuda.runtime.JCuda.<clinit>(JCuda.java:290) 
    at cudaTest.main(cudaTest.java:8) 

能土特产品请帮助我,我真的很需要的解决方案。先谢谢你。

回答

1

查找libJCudaRuntime-linux-x86_64.so文件在您的系统,并进行了symoblic链接/lib/libJCudaRuntime-linux-x86_64.so或添加,你发现它是你的LDCONFIG

+0

请你能告诉我,我该怎么办,这时候我是第一次使用linux和cuda。我如何获得这个文件? –

+0

使用'find'从命令中找到一个文件,就像这个'find/-name'libJCudaRuntime-linux-x86_64.so'' – deimus

+0

好了,但是如何制作一个符号链接到这个文件或者添加目录的路径找到它的ldconfig? –

0

其中一个可能的想法的目录的路径 - 就是给一个尝试我项目称为Maven化JCuda https://github.com/MysterionRise/mavenized-jcuda

它是专为不对抗类路径和其他问题的目的而创建的。这真的很容易使用它,所有你需要做的 - 就是把需要版本的JCuda放入pom.xml,然后运行mvn clean package然后mvn exec:exec

Full HowTo在Github页面上可用。随意问我的问题是什么,否则提高对项目

1

复制问题的.so文件,到lib目录:

$ sudo cp *.so /lib/