NDK文件标志中的Android.mk
Android.mk in NDK file flags
我有一个在XCode上编译的大型C/C++库,但它不使用Android NDK在Eclipse上编译。两天来,我在SO上对这个错误做了很多研究和搜索,但现有的答案似乎都没有帮助。
当前错误消息为:
error: undefined reference to ...
这个错误在多个类中重复出现,即使它们都存在。
在Xcode中,这是使用LLVM 6.0为Mac OS平台编译的,只有两个编译器标志:
Apple LLVM 6.0 C Language Dialect: C99[-std=c99]
Apple LLVM 6.0 C++ Standard library: libstdc++ (GNU C++ standard library)
我的安卓系统目前设置如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com.LibAndroidBridge
LOCAL_SRC_FILES := Class.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)/...several
#LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
LOCAL_CFLAGS += -D__GXX_EXPERIMENTAL_CXX0X__
LOCAL_CFLAGS += -x c++
LOCAL_CFLAGS += -DHAVE_PTHREADS
#LOCAL_CFLAGS += -std=c99
LOCAL_CPPFLAGS += -fexceptions
LOCAL_CPPFLAGS += -std=c++11
#LOCAL_CPPFLAGS += -std=c99
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_LDLIBS += -llog
LOCAL_LDLIBS += -latomic
include $(BUILD_SHARED_LIBRARY)
我的Application.mk文件当前设置如下:
APP_CPPFLAGS+= -std=gnu++0x
#APP_ABI := all
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -frtti
#APP_CFLAGS += -std=c99
NDK_TOOLCHAIN_VERSION:=4.8
APP_STL := gnustl_shared
APP_CPPFLAGS += -std=c++11
关于如何在Android上编译大量代码,有什么建议吗?
谢谢!
这取决于未定义引用的确切用途。如果这是您的一些代码,那么LOCAL_SRC_FILES
中可能缺少一些文件。如果这是一个库,您需要将其添加到LOCAL_STATIC_LIBRARIES
中(不过您需要Android版本)。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- 我在 ndk 中构建文件时遇到错误 android.mk
- 如何更新/订购'Android.mk'文件?
- 包括来自预构建库Android.mk的标题文件
- android.mk-包括与NDK辅助的本机C 的OPENCV目录
- 创建目录中所有.cpp文件和 android.mk 子目录中的FILE_LIST
- Android.mk 添加LOCAL_CPPFLAGS不起作用
- 如何在Android NDK的 Android.mk 文件中正确包含预构建的静态库?
- 将Makefile转换为Android.mk
- 使用与Application.mk中定义的STL不同的STL编译android ndk模块
- 您的APP_BUILD_SCRIPT指向未知文件:/jni/Android.mk F:/Android/Android-
- NDK文件标志中的Android.mk
- 如何在 Android.mk 中添加仅限 C 的选项
- 警告:/Android.mk:链接器标志中的非系统库
- Android.mk:为Linux构建库
- Android.Mk将编译.c源代码,但不编译.cpp
- 如何编译我的c++库在纯Android Studio的方式(不指定任何.mk文件在我们自己)
- Android.mk文件中的C++扩展