我有一个完全可工作的应用程序,涉及一些C++和OpenCV技术。它能够成功编译和运行。现在我只是试图整理我的代码并进行更改,在编译时消除所有警告。但是有一个警告我不理解。它似乎是与我的android.mk文件有关。
当我编译时,控制台输出如下:
当我编译时,控制台输出如下:
06:58:21 **** Incremental Build of configuration Default for project Motion ****
"C:\\android-ndk-r9c\\ndk-build.cmd" all
Android NDK: WARNING:jni/Android.mk:mixed_sample: non-system libraries in linker flags: -lopencv_java
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
[armeabi-v7a] Compile++ thumb: mixed_sample <= cpp_part.cpp
[armeabi-v7a] SharedLibrary : libmixed_sample.so
C:/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: warning: hidden symbol '__aeabi_atexit' in C:/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a(atexit_arm.o) is referenced by DSO c:/opencv-2.4.8-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_java.so
[armeabi-v7a] Install : libmixed_sample.so => libs/armeabi-v7a/libmixed_sample.so
06:58:24 Build Finished (took 2s.515ms)
我的android.mk文件如下:
LOCAL_PATH := $(call my-dir)
# compile with profiling
LOCAL_CFLAGS := -pg
include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED
include c:\opencv-2.4.8-android-sdk/sdk/native/jni/OpenCV.mk
LOCAL_MODULE := mixed_sample
LOCAL_SRC_FILES := cpp_part.cpp
LOCAL_LDLIBS += -llog -ldl -lz
LOCAL_STATIC_LIBRARIES := android-ndk-profiler
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android-ndk-profiler)
我甚至不知道"-lopencv_java"链接标志来自哪里,它在android.mk中没有出现过。
有什么想法吗?
编辑:作为对Alex Cohn问题的回答。如果我在“include $(CLEAR_VARS)”之前的行中添加“$(info ==$(OPENCV_INSTALL_MODULES)==)” ,则控制台报告如下内容:
08:39:34 **** Incremental Build of configuration Default for project Motion ****
"C:\\android-ndk-r9c\\ndk-build.cmd" all
====
Android NDK: WARNING:jni/Android.mk:mixed_sample: non-system libraries in linker flags: -lopencv_java
Android NDK: This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK: or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK: current module
[armeabi-v7a] Compile++ thumb: mixed_sample <= cpp_part.cpp
[armeabi-v7a] SharedLibrary : libmixed_sample.so
C:/android-ndk-r9c/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: warning: hidden symbol '__aeabi_atexit' in C:/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a(atexit_arm.o) is referenced by DSO c:/opencv-2.4.8-android-sdk/sdk/native/jni/../libs/armeabi-v7a/libopencv_java.so
[armeabi-v7a] Install : libmixed_sample.so => libs/armeabi-v7a/libmixed_sample.so
08:39:36 Build Finished (took 2s.564ms)
$(info ==$(OPENCV_INSTALL_MODULES)==)
,然后运行ndk-build
并打印出其输出。 - Alex Cohn