Arm下Grpc交叉编译过程记录

首先获取git源码:git clone https://github.com/grpc/grpc.git

cd grpc
git submodule update --init

安装zlib。

export CC=arm-linux-gnueabihf-gcc
export AR=arm-linux-gnueabihf-ar
./configure
make -j4
make install prefix=/usr/arm-linux-gnueabihf

编译protobuf:

cd grpc/third_party/protobuf
./autogen.sh && ./configure && make -j4
sudo make install -j4
sudo ldconfig

编译gRPC:

cd ..
make -j4 && sudo make install -j4 && sudo ldconfig

编译Arm静态库:

make clean
make plugins CC=arm-linux-gnueabihf-gcc -j4

交叉编译gRPC:

export GRPC_CROSS_COMPILE=true
export GRPC_CROSS_AROPTS="cr --target=elf32-little"
make -j4 HAS_PKG_CONFIG=false \
    CC=arm-linux-gnueabihf-gcc \
    CXX=arm-linux-gnueabihf-g++ \
    RANLIB=arm-linux-gnueabihf-ranlib \
    LD=arm-linux-gnueabihf-ld \
    LDXX=arm-linux-gnueabihf-g++ \
    AR=arm-linux-gnueabihf-ar \
    PROTOBUF_CONFIG_OPTS="--host=arm-linux-gnueabihf --with-protoc=/usr/local/bin/protoc" static

因为arm-linux-gnueabihf-ld 不识别 “-Wl” 参数,所以只能编译静态库,成功编译后的库文件在 “grpc/libs/opt”.

你可能感兴趣的:(linux开发,C++开发,GRPC)