【问题标题】:android external/stlport include in Android.mk build not successfullandroid external/stlport 包含在 Android.mk 构建中不成功
【发布时间】:2011-10-02 19:13:55
【问题描述】:

我正在尝试使用 android-froyo 源构建一个应用,其中我使用 skiastl 模板,

我已经包含了

MY_INCLUDES=external/zlib external/jpeg external/freetype/include \
    frameworks/base/core/jni/android/graphics  external/skia/include/core \
    external/libpng external/expat/lib <b>external/stlport/stlport</b>

libstlport_cflags := -D_GNU_SOURCE
libstlport_cppflags := -fuse-cxa-atexit 

LOCAL_CPPFLAGS := $(libstlport_cppflags)
include $(BUILD_STATIC_LIBRARY)

当我尝试使用此应用程序构建 android 源代码时出现以下错误,我将其保存在包/应用程序中:

external/stlport/stlport/stl/_new.h:47:50:错误:libstdc++/include/new:没有这样的文件或目录

请指导我纠正这个问题。

谢谢

莫希特

【问题讨论】:

  • 我也尝试添加 LOCAL_STATIC_LIBRARY := libstlport,但它甚至不包含 stl 文件
  • 我冒昧地重新格式化了您的帖子。 StackOverflow (SO) 使用很棒的 Markdown 库进行后期标记。真的很值得研究 :) 哦...欢迎来到 SO! ;)

标签: android android-2.2-froyo android-ndk-r5 android-source


【解决方案1】:
cpp
#include <stdio.h>
// The code 
// The set of definitions and includes for STLPort 
// They used defined() instead of #ifdef. 
#define _STLP_HAS_INCLUDE_NEXT  1 
#define _STLP_USE_MALLOC   1 
#define _STLP_USE_NO_IOSTREAMS  1 
#include <stl/config/_android.h> 
#include <map>
#include <string> 

int main(void)
{
    std::string a = "abc";
    printf("%s",a.c_str());
    return 0;
}

Android.mk
# A simple test for the minimal standard C++ library
#
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := test-libstl.cpp
LOCAL_C_INCLUDES += sources/cxx-stl/stlport/stlport
LOCAL_SHARED_LIBRARIES += libstlport 
LOCAL_MODULE := test-libstl
include $(BUILD_EXECUTABLE)

【讨论】:

  • 各位朋友,我正在编译 Android 4.0,在此期间我收到一个错误:“external/stlport/stlport/stl/_iterator_base.h:116:43: error: libstdc++/include/iterator: No这样的文件或目录“。任何人都对此有想法。
【解决方案2】:

据我了解,预处理器找不到的文件位于bionic 文件夹中。

我遇到了同样的问题,我通过添加以下行解决了它:

LOCAL_C_INCLUDES += bionic

【讨论】:

  • 这就是答案。 Bionic 包含 Android 风格的标准库。
【解决方案3】:

我没有在 Android 2.2 上尝试过,但我使用的是 Android Kitkat (4.4)。

为了让 stlport 库与我们的项目一起使用,我们将它包含在 我们项目的 Android.mk 中,如下所示:

include external/stlport/libstlport.mk

这是假设在 Froyo 上,有一个 libstlport.mk 文件要包含在您的构建过程中。在 4.4 中,还有一个 Android.mk 文件,但它也构建了其他代码并将 stlport 构建为静态库(这不是我们想要的)。

您可能还需要添加包含目录,例如:external/stlport/stlport

【讨论】:

  • include external/stlport/libstlport.mk 对 Android 4.2.2 也有帮助,但我还需要添加 LOCAL_SHARED_LIBRARIES += libstlport
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
相关资源
最近更新 更多