作者:上帝认我做干爹 | 来源:互联网 | 2023-05-24 10:07
目的: 不想用grpc自带的第三方版本,或已有其他已编译好的库
(openssl) 已交叉编译好openssl, 在大型工程涉及多个团队时很有效,可以对齐openssl版本,避免问题,由于在工程遇到此问题,记录在此
-DgRPC_SSL_PROVIDER=package
-DOPENSSL_INCLUDE_DIR=
-DOPENSSL_CRYPTO_LIBRARY=
-DOPENSSL_SSL_LIBRARY=
(zlib) 已交叉编译好的openssl库, 用法同上
-DgRPC_ZLIB_PROVIDER=package
-DZLIB_LIBRARY=
-DZLIB_INCLUDE_DIR=
(protobuf) 用法同上
-DgRPC_PROTOBUF_PROVIDER=package
-DProtobuf_LIBRARY=
-DProtobuf_PROTOC_LIBRARY=
-DProtobuf_INCLUDE_DIR=
(absl)
-DgRPC_ABSL_PROVIDER=package
-Dabsl_DIR=
(cares) 用法同absl
-DgRPC_CARES_PROVIDER=package
-Dcares_DIR=
Note:
交叉编译前,需要宿主机上先行编译protobuf和grpc, 因为grpc中有些代码会利用protoc生成相关代码。
以下为arm平台所用编译选项,记录在下面:
cmake -DCMAKE_TOOLCHAIN_FILE=../arm.cmake -DgRPC_BUILD_TESTS=OFF -DProtobuf_PROTOC_EXECUTABLE=/usr/local/bin/protoc -DCMAKE_INSTALL_PREFIX=xx -DBUILD_SHARED_LIBS=ON DBUILD_TESTING=OFF -DABSL_RUN_TESTS=OFF -DgRPC_INSTALL=ON -DgRPC_SSL_PROVIDER=package -DOPENSSL_INCLUDE_DIR=xxx -DOPENSSL_CRYPTO_LIBRARY=xxxx -DOPENSSL_SSL_LIBRARY=xxxx -DgRPC_ZLIB_PROVIDER=package -DZLIB_LIBRARY=xxx -DZLIB_INCLUDE_DIR=xxx -DgRPC_ABSL_PROVIDER=package -Dabsl_DIR=xxx -DgRPC_CARES_PROVIDER=package -Dc-ares_DIR=xxx -DgRPC_PROTOBUF_PROVIDER=package -DProtobuf_LIBRARY=xxxx -DProtobuf_PROTOC_LIBRARY=xxxx -DProtobuf_INCLUDE_DIR=xxx ..