Android链接错误

Android链接错误,android,arm,loadlibrary,Android,Arm,Loadlibrary,我正在运行Ubuntu 10.10 我没有用NDK 我在DS-5(ARM的开发工具集)中编译了我的ARM共享库。当我将它们放在libs/armeabi下并调用System.loadLibrary()时,它找不到它们 下面是课程: package org.me.testds5; //a JNI wrapper class public class WrapMyNative { static { //ERROR HERE //note

我正在运行Ubuntu 10.10

我没有用NDK

我在DS-5(ARM的开发工具集)中编译了我的ARM共享库。当我将它们放在libs/armeabi下并调用System.loadLibrary()时,它找不到它们

下面是课程:

package org.me.testds5;

//a JNI wrapper class
public class WrapMyNative
{
    static
    {
            //ERROR HERE
            //note that calling
            //System.loadLibrary("libAddSub"); generates the same error
        System.loadLibrary("AddSub");
    }

    //some native functions
    public native int add(int a, int b);
    public native int sub(int n, int m);

}
该库的确切名称是libAddSub.so

日志:

11-30 04:54:11.273: ERROR/AndroidRuntime(372): FATAL EXCEPTION: main
11-30 04:54:11.273: ERROR/AndroidRuntime(372): java.lang.ExceptionInInitializerError
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at org.me.testds5.TestDS5.onCreate(TestDS5.java:13)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.os.Looper.loop(Looper.java:123)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at java.lang.reflect.Method.invokeNative(Native Method)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at java.lang.reflect.Method.invoke(Method.java:521)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at dalvik.system.NativeStart.main(Native Method)
11-30 04:54:11.273: ERROR/AndroidRuntime(372): Caused by: java.lang.UnsatisfiedLinkError: Library AddSub not found
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at java.lang.Runtime.loadLibrary(Runtime.java:461)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at java.lang.System.loadLibrary(System.java:557)
11-30 04:54:11.273: ERROR/AndroidRuntime(372):     at org.me.testds5.WrapMyNative.<clinit>(WrapMyNative.java:7)
11-30 04:54:11.273:错误/AndroidRuntime(372):致命异常:main
11-30 04:54:11.273:错误/AndroidRuntime(372):java.lang.ExceptionInInitializeError
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于org.me.testds5.testds5.onCreate(testds5.java:13)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于android.os.Handler.dispatchMessage(Handler.java:99)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在android.os.Looper.loop(Looper.java:123)上
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于android.app.ActivityThread.main(ActivityThread.java:4627)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于java.lang.reflect.Method.invokenactive(本机方法)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于java.lang.reflect.Method.invoke(Method.java:521)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在dalvik.system.NativeStart.main(本机方法)
11-30 04:54:11.273:错误/AndroidRuntime(372):原因:java.lang.UnsatifiedLinkError:找不到库AddSub
11-30 04:54:11.273:ERROR/AndroidRuntime(372):在java.lang.Runtime.loadLibrary(Runtime.java:461)中
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于java.lang.System.loadLibrary(System.java:557)
11-30 04:54:11.273:ERROR/AndroidRuntime(372):位于org.me.testds5.WrapMyNative(WrapMyNative.java:7)

首先,您确实应该使用ndk,而不是其他gcc构建,例如codesourcery,尤其是非gcc编译器,它甚至可能无法生成兼容格式的对象文件


第二,作为一个实验,尝试使用system.load()代替它,它接受完整的路径名。但是,如果您不使用ndk gcc,仍然要为问题做好准备。

首先,您确实应该使用ndk,而不是像codesourcery这样的其他gcc构建,尤其是不要使用非gcc编译器,它甚至可能无法生成兼容格式的目标文件


第二,作为一个实验,尝试使用system.load()代替它,它接受完整的路径名。但是,如果不使用ndk gcc,仍然要为问题做好准备。

我正在使用ndk的替代品,因为我似乎无法让ndk构建任何OpenGL ES。我认为二进制文件应该是兼容的,因为ARM本身支持构建,不同编译器的输出通常是不兼容的。这里的目标不是一个裸机ARM内核,而是android运行时链接器及其运行的linux。我相信android已经有了OpenGL ES,所以也许你可以从中抄袭一个构建系统(或更多)?需要改变目标平台:='android-4'我正在使用ndk的替代品,因为我似乎无法让ndk构建任何OpenGL ES。我认为二进制文件应该是兼容的,因为ARM本身支持构建,不同编译器的输出通常是不兼容的。这里的目标不是一个裸机ARM内核,而是android运行时链接器及其运行的linux。我相信android已经有了OpenGL ES,所以也许你可以从中抄袭一个构建系统(或更多)?需要改变目标平台:='android-4'