在JNI中使用Android自带的Log日志功能,在编译时提示如下异常:

kaizen@tuan800-inc:~/workspace_eclipse_1/im_pulltorefresh/MyJNITest$ ndk-build[armeabi] SharedLibrary  : libuninstalled_observer.so/home/kaizen/developer/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/uninstalled_observer/main_activity_UninstalledObserverActivity.o: in function Java_main_activity_UninstalledObserverActivity_init:jni/main_activity_UninstalledObserverActivity.c:30: error: undefined reference to '__android_log_write'/home/kaizen/developer/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/uninstalled_observer/main_activity_UninstalledObserverActivity.o: in function Java_main_activity_UninstalledObserverActivity_init:jni/main_activity_UninstalledObserverActivity.c:51: error: undefined reference to '__android_log_write'/home/kaizen/developer/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/uninstalled_observer/main_activity_UninstalledObserverActivity.o: in function Java_main_activity_UninstalledObserverActivity_init:jni/main_activity_UninstalledObserverActivity.c:75: error: undefined reference to '__android_log_write'/home/kaizen/developer/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/uninstalled_observer/main_activity_UninstalledObserverActivity.o: in function Java_main_activity_UninstalledObserverActivity_init:jni/main_activity_UninstalledObserverActivity.c:80: error: undefined reference to '__android_log_write'collect2: ld returned 1 exit statusmake: *** [obj/local/armeabi/libuninstalled_observer.so] Error 1

观察错误日志,可以看出,是由于找不到__android_log_write这个函数。


解决方案

在该工程的Android.mk文件中,添加如下代码:

LOCAL_LDLIBS += -llog

再次执行ndk-build,成功输出so文件。

kaizen@tuan800-inc:~/workspace_eclipse_1/im_pulltorefresh/MyJNITest$ ndk-build[armeabi] Compile thumb  : uninstalled_observer <= main_activity_UninstalledObserverActivity.cjni/main_activity_UninstalledObserverActivity.c: In function 'Java_main_activity_UninstalledObserverActivity_init':jni/main_activity_UninstalledObserverActivity.c:141:72: warning: embedded '\0' in format [-Wformat-contains-nul][armeabi] SharedLibrary  : libuninstalled_observer.so[armeabi] Install        : libuninstalled_observer.so => libs/armeabi/libuninstalled_observer.so


更多相关文章

  1. 大话企业级Android应用开发实战 文件下载
  2. mipmap和drawable文件夹的区别
  3. Android: /cache中的文件是怎么消失的
  4. android学习日志
  5. Android APK文件结构 完整打包编译的流程 APK安装过程 详解
  6. Android读取xxx.properties配置文件中文出现乱码解决方法
  7. Android Studio(九):引用jar及so文件
  8. Android——4.2.2 文件系统文件夹分析
  9. [置顶] Android上传文件到Web服务器,PHP接收文件(二)

随机推荐

  1. android定位个人当前位置
  2. 安卓隐藏标题栏状态栏 ,实现全屏效果
  3. Android程序意外终止问题
  4. Android核心分析之二十一Android应用框架
  5. Android/iOS 和js的交互的兼容性写法
  6. Android Dialog背景全透明无边框 Theme S
  7. Android SDK各版本源码
  8. bugly镜像地址,可以下载android sdk的插件
  9. android 菜单实例
  10. android机器人学习网