compilation Error with NDK using c++static

Viewed 828

I am compiling my project with ndk and I want to use c++_static to build my project. For this I am using-

APP_STL := c++_static 

And

APP_CPPFLAGS := -std=c++11 -pthread -frtti  -Wno-format-extra-args -Wno-format-zero-length -Wdeprecated-declarations -fno-builtin-cos -fno-builtin-sin -fno-builtin-cosf -fno-builtin-sinf -fexceptionsin

in my Application.mk

But this is giving me error :

/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:313:9: error: '::signbit' has not been declared
 using ::signbit;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:314:9: error: '::fpclassify' has not been declared
 using ::fpclassify;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:315:9: error: '::isfinite' has not been declared
 using ::isfinite;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:316:9: error: '::isinf' has not been declared
 using ::isinf;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:318:9: error: '::isnormal' has not been declared
 using ::isnormal;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:319:9: error: '::isgreater' has not been declared
 using ::isgreater;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:320:9: error: '::isgreaterequal' has not been declared
 using ::isgreaterequal;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:321:9: error: '::isless' has not been declared
 using ::isless;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:322:9: error: '::islessequal' has not been declared
 using ::islessequal;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:323:9: error: '::islessgreater' has not been declared
 using ::islessgreater;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:324:9: error: '::isunordered' has not been declared
 using ::isunordered;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:325:9: error: '::isunordered' has not been declared
 using ::isunordered;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:327:9: error: '::float_t' has not been declared
 using ::float_t;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:328:9: error: '::double_t' has not been declared
 using ::double_t;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:485:9: error: '::acosl' has not been declared
 using ::acosl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:486:9: error: '::asinl' has not been declared
 using ::asinl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:487:9: error: '::atanl' has not been declared
 using ::atanl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:488:9: error: '::atan2l' has not been declared
 using ::atan2l;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:490:9: error: '::cosl' has not been declared
 using ::cosl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:491:9: error: '::coshl' has not been declared
 using ::coshl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:492:9: error: '::expl' has not been declared
 using ::expl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:495:9: error: '::fmodl' has not been declared
 using ::fmodl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:498:9: error: '::logl' has not been declared
 using ::logl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:499:9: error: '::log10l' has not been declared
 using ::log10l;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:500:9: error: '::modfl' has not been declared
 using ::modfl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:501:9: error: '::powl' has not been declared
 using ::powl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:502:9: error: '::sinl' has not been declared
 using ::sinl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:503:9: error: '::sinhl' has not been declared
 using ::sinhl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:504:9: error: '::sqrtl' has not been declared
 using ::sqrtl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:505:9: error: '::tanl' has not been declared
 using ::tanl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:508:9: error: '::tanhl' has not been declared
 using ::tanhl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:509:9: error: '::acoshl' has not been declared
 using ::acoshl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:510:9: error: '::asinhl' has not been declared
 using ::asinhl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:511:9: error: '::atanhl' has not been declared
 using ::atanhl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:512:9: error: '::cbrtl' has not been declared
 using ::cbrtl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:518:9: error: '::erfl' has not been declared
 using ::erfl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:519:9: error: '::erfcl' has not been declared
 using ::erfcl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:520:9: error: '::exp2l' has not been declared
 using ::exp2l;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:521:9: error: '::expm1l' has not been declared
 using ::expm1l;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:526:9: error: '::hypotl' has not been declared
 using ::hypotl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:528:9: error: '::lgammal' has not been declared
 using ::lgammal;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:529:9: error: '::llrintl' has not been declared
 using ::llrintl;
         ^
/Users/aagman/Desktop/Project/Android/android-ndk-r12b/sources/cxx-stl/llvm-libc++/libcxx/include/cmath:531:9: error: '::log1pl' has not been declared
 using ::log1pl;             ^

Please help me out with this problem. Earlier I built my project using gnustl_shared and it works fine, but because of some constraint I need to build my project using c++ static or c++_shared.

2 Answers

I experienced the same issue when including <complex> using the LLVM libc++ STL. A 'solution' which worked for me was to comment out these particular lines in ndk-bundle/sources/cxx-stl/llvm-libc++/include/cmath.

It is unlikely something wrong with the std lib in NDK.

I experienced the similar problem recently, had exact stack but with different NDK version (16b). I was trying to compile folly with cmake.

Turns out I had "-I src/folly/folly" folder in the include paths and by some reason cmake didn't put the system includes first.

The compiler was looking for <math> and other system libraries in the folly folder. As soon I removed this folder from the list of includes the problem was gone.

  1. Look for the files which define the primitives used in cmath and then find the files with the same names in your path.
  2. Remove not needed folders from includes
  3. Make sure that system includes are first on the list.
Related