2015-02-17 37 views
0

我想在我的Android应用程序使用libbacktrace,我不知道如何构建它... ...构建libbacktrace为Android

现在我试图建立由脚本的lib:

#!/bin/bash 
ndk-build \ 
    APP_BUILD_SCRIPT=libbacktrace/Android.mk \ 
    NDK_PROJECT_PATH=. \ 
    APP_STL=stlport_static \ 
    LOCAL_C_INCLUDES+=include \ 
    LOCAL_C_INCLUDES+=../../../android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.8/include \ 
    LOCAL_C_INCLUDES+=../../../android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include/ \ 
    APP_PLATFORM=android-19 

,我有错误:

[armeabi] Compile++ thumb: backtrace <= BacktraceImpl.cpp 
libbacktrace/BacktraceImpl.cpp: In member function 'virtual std::string Backtrace::FormatFrameData(const backtrace_frame_data_t*)': 
libbacktrace/BacktraceImpl.cpp:117:48: error: expected ')' before 'PRIxPTR' 
    snprintf(buf, sizeof(buf), "#%02zu pc %0*" PRIxPTR " %s (%s+%" PRIuPTR ")", 
               ^
libbacktrace/BacktraceImpl.cpp:119:58: error: conversion lacks type at end of format [-Werror=format=] 
       frame->func_name.c_str(), frame->func_offset); 
                 ^
libbacktrace/BacktraceImpl.cpp:119:58: error: too many arguments for format [-Werror=format-extra-args] 
libbacktrace/BacktraceImpl.cpp:121:48: error: expected ')' before 'PRIxPTR' 
    snprintf(buf, sizeof(buf), "#%02zu pc %0*" PRIxPTR " %s (%s)", frame->num, 
               ^
libbacktrace/BacktraceImpl.cpp:122:87: error: conversion lacks type at end of format [-Werror=format=] 
       (int)sizeof(uintptr_t)*2, relative_pc, map_name, frame->func_name.c_str()); 
                        ^
libbacktrace/BacktraceImpl.cpp:122:87: error: too many arguments for format [-Werror=format-extra-args] 
libbacktrace/BacktraceImpl.cpp:124:48: error: expected ')' before 'PRIxPTR' 
    snprintf(buf, sizeof(buf), "#%02zu pc %0*" PRIxPTR " %s", frame->num, 
               ^
libbacktrace/BacktraceImpl.cpp:125:61: error: conversion lacks type at end of format [-Werror=format=] 
       (int)sizeof(uintptr_t)*2, relative_pc, map_name); 
                  ^
libbacktrace/BacktraceImpl.cpp:125:61: error: too many arguments for format [-Werror=format-extra-args] 
cc1plus: all warnings being treated as errors 
make: *** [obj/local/armeabi/objs/backtrace/BacktraceImpl.o] Error 1 

我明白,我做错了什么,但我不知道是什么...

回答

0

看起来PRIxPTR(它应该是一个宏)的定义有些问题。

IIRC类型是printf()格式的“主”字母,例如, i in %i,详情请参阅printf格式规格。 (Oops ...它被正式称为说明符,并且还有一个可选的长度子标识符,但您看到该点,但M $称它们为“printf类型字段字符”)。

在C中,"a" "b"相同"ab",所以#define X "i"后的文本"%" X相当于"%i"