gpt4 book ai didi

NDK 文件标志中的 Android.mk

转载 作者:太空宇宙 更新时间:2023-11-04 13:39:08 25 4
gpt4 key购买 nike

我有一个大型 C/C++ 库,可以在 XCode 上编译,但不能在使用 Android NDK 的 Eclipse 上编译。2 天来,我已经就此错误对 SO 进行了大量研究和搜索,现有答案似乎都无济于事。

当前的错误信息是:

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 上编译如此大量的代码有什么建议吗?

谢谢!

最佳答案

这取决于 undefined reference 的确切用途。如果那是您的部分代码,您可能在 LOCAL_SRC_FILES 中丢失了一些文件。如果那是某个库,您需要将它添加到 LOCAL_STATIC_LIBRARIES(不过您需要 Android 版本)。

关于NDK 文件标志中的 Android.mk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28441569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com