之所以要编译grpc-java,是因为在编译hadoop3.3.3的时候需要一个protoc-gen-grpc-java-1.21.1的版本,但是这个版本中没有我当前使用的架构对应的exe文件,因此需要自己编译这个工具,查看了protoc-gen-grpc-java-1.21.1的pom.xml文件,发现此包是由https://github.com/grpc/grpc-java.gi这个库提供的。因此需要编译对应版本的grpc-java.git这个库。protoc的编译可以参考protobuf高版本安装。
因为我不需要android的相关组件,并且我使用了指定的protoc的版本,因此需要在grpc-java目录中创建gradle.properties文件并写入以下内容:
skipAndroid=true
protoc=/usr/local/bin
执行./gradlew build进行编译
编译时存在异常
需要安装
yum install libstdc++-devel
安装完后还是报错,需要
找到库文件所在的位置,并建立软连接
ln -sf /usr/lib/gcc/ppc64le-redhat-linux/8/libstdc++.so /usr/lib/libstdc++.so
还是不行,最后去掉了compiler/build.gradle文件中的-static-libstdc++这个选项,编译成功。