为android arm架构构建boost时出错

为android arm架构构建boost时出错,boost,android-ndk,arm,clang++,boost-filesystem,Boost,Android Ndk,Arm,Clang++,Boost Filesystem,为什么只有在构建一些特定的boost库(如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 使用来自android ndk的独立工具链 gcc版本: gcc(Ubun

为什么只有在构建一些特定的boost库(如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

使用来自android ndk的独立工具链

gcc版本: gcc(Ubuntu 6.0.1-0ubuntu1)6.0.0 20160414(实验版)

使用boost boost_1_66_0还尝试了boost_1_64_0

sudo ./bootstrap.sh --with-libraries=filesystem cxxflags=-std=c++14
使用工具集gcc构建引擎

还尝试了-std=c++11&使用工具集clang

user-config.jam文件:

standaloneToolchains = /home/rahul/Android/Sdk/standalone_toolchains ;
using clang : arm : $(standaloneToolchains)/arm/bin/clang++ ;
用于构建库文件系统的命令:

./b2-d+2-j2——重新配置cxflags=-std=c++14目标操作系统=android工具集=clangarminclude=/home/rahul/android/Sdk/standalone_工具链/include/c++/4.9.x链接=静态,共享变量=发布线程=多前缀=/home/rahul/android/Sdk/boost/arm安装

./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使用:android-ndk-r16b,也在android-ndk-r15c上试用

使用本网站作为参考:


为什么会出现这些错误?

您可以在android API 24之后使用工具链编译boost

奇怪的是,fgetpos似乎是在stdio.h中定义的,甚至对于早期的android API也是如此。 我想在stdio.h中只有fgetpos的声明
但谷歌的libc中没有定义(实现)

能修好吗?