0
votes

Why am I getting these errors only when building some particular boost libraries like filesystem for arm ?

error: no member named 'fgetpos' in the global namespace
error: no member named 'fsetpos' in the global namespace
error: no member named 'truncate' in the global namespace

'error' screenshot

Using standalone toolchain from android ndk.

gcc version : gcc (Ubuntu 6.0.1-0ubuntu1) 6.0.0 20160414 (experimental)

Using boost boost_1_66_0 also tried boost_1_64_0

sudo ./bootstrap.sh --with-libraries=filesystem cxxflags=-std=c++14

Boost.Build engine with toolset gcc...

also tried with -std=c++11 & using toolset clang..

user-config.jam file :

standaloneToolchains = /home/rahul/Android/Sdk/standalone_toolchains ;
using clang : arm : $(standaloneToolchains)/arm/bin/clang++ ;

Command to build the library filesystem :

./b2 -d+2 -j 2 --reconfigure cxxflags=-std=c++14 target-os=android toolset=clang-arm include=/home/rahul/Android/Sdk/standalone_toolchains/include/c++/4.9.x link=static,shared variant=release threading=multi --prefix=/home/rahul/Android/Sdk/boost/arm install

./b2 -d+2 -j 2 --reconfigure cxxflags=-std=c++14 target-os=android toolset=clang-arm include=/home/rahul/Android/Sdk/standalone_toolchains/include/c++/4.9.x link=static,shared variant=release threading=multi --prefix=/home/rahul/Android/Sdk/boost/arm install

ndk used : android-ndk-r16b ,also tried on android-ndk-r15c

Using this site for reference :

https://sites.google.com/site/robdevelopertips/how-to-build-boost-1-64-0-for-androidenter link description here

WHy these errors ?

1
Any luck to fix it?Pei

1 Answers

1
votes

You may compile boost by the toolchain later than android API 24.

It is strange that fgetpos seems to be defined in stdio.h even for earlier android API. I guess there is an only declaration of fgetpos in stdio.h but there is no definition(implementation) in google's libc.