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」にある.