NDK文件标志中的Android.mk

Android.mk in NDK file flags

本文关键字:Android mk 文件 标志 NDK      更新时间:2023-10-16

我有一个在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版本)。