【问题标题】:libbinder static compile error ndk11c api 21libbinder静态编译错误ndk11c api 21
【发布时间】:2016-10-17 08:24:28
【问题描述】:

您好,寻找有关为 android 核心 libbinder 编译静态库的帮助。

这是我的 Android.mk 和 Application.mk

sources := \
    AppOpsManager.cpp \
    Binder.cpp \
    BpBinder.cpp \
    BufferedTextOutput.cpp \
    Debug.cpp \
    IAppOpsCallback.cpp \
    IAppOpsService.cpp \
    IBatteryStats.cpp \
    IInterface.cpp \
    IMemory.cpp \
    IPCThreadState.cpp \
    IPermissionController.cpp \
    IProcessInfoService.cpp \
    IServiceManager.cpp \
    MemoryBase.cpp \
    MemoryDealer.cpp \
    MemoryHeapBase.cpp \
    Parcel.cpp \
    PermissionCache.cpp \
    PersistableBundle.cpp \
    ProcessInfoService.cpp \
    ProcessState.cpp \
    Static.cpp \
    Status.cpp \
    TextOutput.cpp 

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libbinder
LOCAL_SRC_FILES := $(sources)
LOCAL_STATIC_LIBRARIES := libbase libutils libcutils
LOCAL_EXPORT_STATIC_LIBRARY_HEADERS := libbase libutils libcutils libbinder
#LOCAL_CPPFLAGS := -DBINDER_IPC_32BIT=1
#LOCAL_CPPFLAGS += -Werror 
LOCAL_CFLAGS   += -DHAVE_SYS_UIO_H -DHAVE_PTHREADS
LOCAL_CPPFLAGS += -D__GXX_EXPERIMENTAL_CXX0X__ -DHAVE_SYS_UIO_H -DHAVE_PTHREADS -std=gnu++11
#LOCAL_CPPFLAGS += -std=c++11
#LOCAL_CPPFLAGS += -frtti -fexceptions
include $(BUILD_STATIC_LIBRARY)


APP_MODULES := libbinder 
APP_ABI := armeabi
APP_PLATFORM := android-21
APP_STL := gnustl_static
#NDK_TOOLCHAIN_VERSION = 4.8

这里有问题..

[armeabi] Clean          : binder [armeabi]
[armeabi] Clean          : gnustl_shared [armeabi]
[armeabi] Clean          : gnustl_static [armeabi]
[armeabi] Compile++ thumb: binder <= AppOpsManager.cpp
[armeabi] Compile++ thumb: binder <= Binder.cpp
[armeabi] Compile++ thumb: binder <= BpBinder.cpp
[armeabi] Compile++ thumb: binder <= BufferedTextOutput.cpp
[armeabi] Compile++ thumb: binder <= Debug.cpp
[armeabi] Compile++ thumb: binder <= IAppOpsCallback.cpp
[armeabi] Compile++ thumb: binder <= IAppOpsService.cpp
[armeabi] Compile++ thumb: binder <= IBatteryStats.cpp
[armeabi] Compile++ thumb: binder <= IInterface.cpp
[armeabi] Compile++ thumb: binder <= IMemory.cpp
[armeabi] Compile++ thumb: binder <= IPCThreadState.cpp
[armeabi] Compile++ thumb: binder <= IPermissionController.cpp
[armeabi] Compile++ thumb: binder <= IProcessInfoService.cpp
[armeabi] Compile++ thumb: binder <= IServiceManager.cpp
[armeabi] Compile++ thumb: binder <= MemoryBase.cpp
[armeabi] Compile++ thumb: binder <= MemoryDealer.cpp
[armeabi] Compile++ thumb: binder <= MemoryHeapBase.cpp
In file included from /home/adminuser/android-ndk-r11c/platforms/android-21/arch-arm/usr/include/cutils/atomic.h:22:0,
                 from jni/MemoryHeapBase.cpp:30:
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:816:5: error: 'std::__atomic_is_lock_free' declared as an 'inline' variable
     atomic_is_lock_free(const atomic<_ITp>* __a) noexcept
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:816:5: error: template declaration of 'bool std::__atomic_is_lock_free'
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:816:5: error: expected primary-expression before 'const'
     atomic_is_lock_free(const atomic<_ITp>* __a) noexcept
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:816:5: error: expected ')' before 'const'
In file included from /home/adminuser/android-ndk-r11c/platforms/android-21/arch-arm/usr/include/utils/RefBase.h:20:0,
                 from /home/adminuser/android-ndk-r11c/platforms/android-21/arch-arm/usr/include/binder/IMemory.h:24,
                 from /home/adminuser/android-ndk-r11c/platforms/android-21/arch-arm/usr/include/binder/MemoryHeapBase.h:23,
                 from jni/MemoryHeapBase.cpp:32:
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:819:3: error: expected ')' before 'template'
   template<typename _ITp>
   ^
In file included from /home/adminuser/android-ndk-r11c/platforms/android-21/arch-arm/usr/include/cutils/atomic.h:22:0,
                 from jni/MemoryHeapBase.cpp:30:
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:830:5: error: expected unqualified-id before 'void'
     atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept;
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:830:5: error: expected ')' before 'void'
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:830:5: error: expected ')' before 'void'
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:834:5: error: variable or field '__atomic_store_n' declared void
     atomic_store_explicit(atomic<_ITp>* __a, _ITp __i,
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:834:5: error: expected primary-expression before '*' token
     atomic_store_explicit(atomic<_ITp>* __a, _ITp __i,
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:834:5: error: '__a' was not declared in this scope
     atomic_store_explicit(atomic<_ITp>* __a, _ITp __i,
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:834:5: error: expected primary-expression before '__i'
     atomic_store_explicit(atomic<_ITp>* __a, _ITp __i,
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:834:5: error: expected primary-expression before '__m'
     atomic_store_explicit(atomic<_ITp>* __a, _ITp __i,
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:840:5: error: variable or field '__atomic_store_n' declared void
     atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:840:5: error: expected primary-expression before 'volatile'
     atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
     ^
/home/adminuser/android-ndk-r11c/sources/cxx-stl/gnu-libstdc++/4.9/include/atomic:840:5: error: expected ')' before 'volatile'
make: *** [obj/local/armeabi/objs/binder/MemoryHeapBase.o] Error 1

源码下载自。 https://android.googlesource.com/platform/frameworks/native/+/master/libs/

我有包含标题 android-ndk-r11c/platforms/android-21/arch-arm/usr/include/ 角质层 实用程序 粘合剂 和其他需要的。 我正在使用带有 android ndk 11c 的 VMWARE cent os 7.x ..

有什么建议吗?

【问题讨论】:

  • 更新您的 NDK 将是一个很好的第一步。 r11 很老,没有很好的 C++11 支持。

标签: android-ndk static-libraries


【解决方案1】:

不确定那里的确切错误,但似乎是标题冲突。

Workaroud:只是在 #include &lt;stdatomic.h&gt; 之前显式地 #include &lt;atomic&gt;(或反向包含它)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多