Android.mk中的NDK文件标志

时间:2015-02-10 20:55:02

标签: android c++ android-ndk

我有一个可以在XCode上编译的大型C / C ++库,但它不能使用Android NDK在Eclipse上编译。 我已经做了很多关于这个错误的研究和搜索,现在已经有2天了,而现有的答案似乎都没有帮助。

当前的错误消息是:

error: undefined reference to ...

对于多个类重复此错误,即使它们都存在。

在Xcode中,这是使用LLVM 6.0编译Mac OS平台,只有2个编译器标志:

Apple LLVM 6.0 C Language Dialect: C99[-std=c99]
Apple LLVM 6.0 C++ Standard library: libstdc++ (GNU C++ standard library)

我的Android目前设置如下:

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上编译大量代码的任何建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这取决于未定义引用的确切含义。如果这是您的部分代码,您可能会遗漏LOCAL_SRC_FILES中的某个文件。如果这是某个库,则需要将其添加到LOCAL_STATIC_LIBRARIES(但您需要Android版本)。