我正在尝试使用 Android NDK CLANG 编译器(arm-linux-androideabi-clang++)从 Ubuntu 为 Android交叉编译 grpc C++(https://github.com/grpc/grpc)。
我试过下面的方法来为Android编译它。
export PATH=/root/Android/arm-26-toolchain-clang/bin:$PATH
export SYSROOT=/root/Android/arm-26-toolchain-clang/sysroot
export CC="arm-linux-androideabi-clang --sysroot $SYSROOT"
export CXX="arm-linux-androideabi-clang++ --sysroot $SYSROOT"
make CFLAGS='-std=c11 -march=armv7-a -D__ANDROID_API__=26' CXXFLAGS='- std=c++11 -frtti -fexceptions -march=armv7-a -D__ANDROID_API__=26' LIBS='-llog -lz -lc++_static' -j2
编译 zlib.c 时抛出错误 - 错误:函数 'lseek' 的隐式声明在 C99 中无效
如何使用上述 CLANG 编译器指定使用 C11 进行构建?
当我允许它继续前进而忽略此错误时,它停在下面 -
./src/core/lib/surface/completion_queue.h:92:5: error: unknown type name
'grpc_experimental_completion_queue_functor'
grpc_experimental_completion_queue_functor* shutdown_callback);
我试图从https://github.com/grpc/grpc/tree/master/examples/android/helloworld编译示例,但它在编译boringssl 时抛出错误。
您能否帮助为工具链 arm-linux-androideabi 交叉编译 gRPC for android?
谢谢
我可以按照 grpc github 存储库中 Makefile 中的交叉编译指令来构建它。创建了一个如下所示的 shell 脚本并且它起作用了 -
export GRPC_CROSS_COMPILE=true
export PATH=/home/ubuntu/stand-alone-toolchain/arm-26-toolchain-clang/bin:$PATH
export SYSROOT=/home/ubuntu/stand-alone-toolchain/arm-26-toolchain-clang/sysroot
export HOST_CC="/usr/bin/gcc"
export HOST_CXX="/usr/bin/g++"
export HOST_LD="/usr/bin/ld"
export CC="arm-linux-androideabi-clang --sysroot $SYSROOT"
export CXX="arm-linux-androideabi-clang++ --sysroot $SYSROOT"
export LD="arm-linux-androideabi-clang++"
export LDXX="arm-linux-androideabi-clang++"
export AR="arm-linux-androideabi-ar"
export STRIP="arm-linux-androideabi-strip"
export PROTOBUF_CONFIG_OPTS="--host=arm-linux-androideabi --with-sysroot=${SYSROOT} --with-protoc=/usr/local/bin/protoc CFLAGS='-march=armv7-a -D__ANDROID_API__=26' CXXFLAGS='-frtti -fexceptions -march=armv7-a -D__ANDROID_API__=26' LIBS='-llog -lz -lc++_static'"
export HAS_PKG_CONFIG=false
export GRPC_CROSS_LDOPTS="-L$SYSROOT -L/home/ubuntu/cross-grpc/grpc"
export GRPC_CROSS_AROPTS="rc --target=elf32-little"
make
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句