问题描述
我有一个使用一些 C++ 和 OpenCV 的完整工作应用程序.它编译并成功运行.现在我只是想整理我的代码并进行更改以在编译时删除所有警告.但是有一个警告我不明白.我的 android.mk 似乎有问题.
I have a fully working app employing some C++ and OpenCV. It compiles and runs successfully. Right now I am just trying to tidy my code and make changes to remove all warnings at compile time. But there is one warning I don't understand. It appears to be a problem with my android.mk.
我编译的时候控制台输出如下:
When I compile, the console output is as follows:
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如下:
My android.mk is as follows:
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 中的任何位置.
I can't even work out where the "-lopencv_java" linker flag comes from, it doesn't appear anywhere in android.mk.
有什么想法吗?
回答 Alex Cohn 的问题.如果我在include $(CLEAR_VARS)"之前的行中添加$(info ==$(OPENCV_INSTALL_MODULES)==)",那么控制台会报告以下内容:
In response to Alex Cohn's question. If I add "$(info ==$(OPENCV_INSTALL_MODULES)==)" in the line preceding "include $(CLEAR_VARS)" then the console reports the following:
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)
推荐答案
在你include OpenCV.mk之前,你必须确保$(OPENCV_INSTALL_MODULES)等于<强>开.您的 Android.mk 文件中有 OPENCV_INSTALL_MODULES:=on 行,但由于某种原因它不起作用.在不深入研究所有可能(和不可能)的问题的情况下,解决问题的一种简单方法是编写
Before you include OpenCV.mk, you must make sure that $(OPENCV_INSTALL_MODULES) is equal on. You have the line OPENCV_INSTALL_MODULES:=on in your Android.mk file, but for some reason it did not work. Without digging into all possible (and impossible) problems, an easy way to fix the problem is to write
override OPENCV_INSTALL_MODULES:=on
在您的 Android.mk 中;另一个 - 运行
in your Android.mk; another - to run
ndk-build OPENCV_INSTALL_MODULES=on
从命令行.
这篇关于链接器标志中的非系统库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)