在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(安卓)Studio1.5 配置Android(安卓)annotations
  2. 大话企业级Android应用开发实战 文件下载
  3. Kitkat 的磁盘加密功能分析
  4. Android中jNI的使用
  5. Android的res目录
  6. Android(安卓)ListView控件基本用法
  7. android webview onJsAlert只调用一次的问题
  8. [转]android 基础知识
  9. NPM 和webpack 的基础使用

随机推荐

  1. android 监听app进入后台以及从后台进入
  2. Android拆分Bitmap完整示例
  3. 模拟ProgressBar下载进度显示
  4. ---RIL层代码分析---RIL_startEventLoop(
  5. 隐藏软键盘方法
  6. 下拉刷新和加载更多
  7. Android(安卓)编译摘要
  8. absolutelayout 实现图片重叠
  9. Display_获取屏幕宽高
  10. android入门 SeekBar