之前,我在2.2上,在Android.mk中使用LOCAL_LDFLAGS = $(LOCAL_PATH)/libtest.a就可以把这个.a文件编译进我的so中。
但是到2.3.1之后,我使用同样的方法,编译之后就会报类似:prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: out/target/product/smdkv210/obj/SHARED_LIBRARIES/sensors.mahimahi_intermediates/nusensors.o: in function sensors_poll_context_t::sensors_poll_context_t():device/samsung/proprietary/libsensors/nusensors.cpp:99: error: undefined reference to 'MEMSAlgLib_eCompass_SetCalibration(short, short, short)'这样的错误。
不知道是不是在2.3.1上调用这个.a文件的方法变了呢?还是其它的原因?

解决方案 »

  1.   

    试试
    LOCAL_LDFLAGS += -l$(LOCAL_PATH)/libtest.a
    LOCAL_LDFLAGS += -L$(LOCAL_PATH)/libtest.a
      

  2.   

    如果你是用2.3,
    先试试把
    LOCAL_LDFLAGS = $(LOCAL_PATH)/libtest.a中的$(LOCAL_PATH)改成自己定义的变量或者写成绝对路径.另外也不排除2.2和2.3编译之间的兼容性.
    你得确认需要的头文件路径在MK中LOCAL_C_INCLUDES :=所指路径是不是2.3的系统的而不是2.2系统的.
      

  3.   

    2.2的android.mk是通过
    LOCAL_STATIC_LIBRARIES += libxxxx
    来加的吧。
      

  4.   

    不管是2.2,2.3,LOCAL_STATIC_LIBRARIES都是可用的,只不过LOCAL_STATIC_LIBRARIES加的库是用在编译过程中生成的,而不是现在的库.
      

  5.   

    不管是2.2,2.3,LOCAL_STATIC_LIBRARIES都是可用的,只不过LOCAL_STATIC_LIBRARIES加的库是用在编译过程中生成的,而不是现在的库.