Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

compilation Error with NDK using c++static

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.

like image 303
Aagman Avatar asked Oct 29 '22 04:10

Aagman


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.

like image 102
CNugteren Avatar answered Nov 09 '22 05:11

CNugteren


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.
like image 35
Sergey Dryganets Avatar answered Nov 09 '22 07:11

Sergey Dryganets