【方案汇总】在C/C++中使用Android(安卓)Log导致编译失败的问题
16lz
2021-12-13
在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
更多相关文章
- Android(安卓)Studio1.5 配置Android(安卓)annotations
- 大话企业级Android应用开发实战 文件下载
- Kitkat 的磁盘加密功能分析
- Android中jNI的使用
- Android的res目录
- Android(安卓)ListView控件基本用法
- android webview onJsAlert只调用一次的问题
- [转]android 基础知识
- NPM 和webpack 的基础使用