让gRPC动态库变得短小精悍

之前对strip还一脸懵逼,刚好在makefile中搜索到关键字,依葫芦画瓢测试一波,果然成功了,后来发现只要一条命令就解决的事情。还是记录下自己解决问题的过程吧。

修改grpc目录下的makefile
修改前:

修改后:

将自己要strip的库添加进去,库文件存放的路径是在grpc/libs/opt下。
执行命令

make strip-shared_c -j8 HAS_PKG_CONFIG=false CC=arm-oe-linux-gnueabi-gcc CXX=arm-oe-linux-gnueabi-g++ RANLIB=arm-oe-linux-gnueabi-ranlib LD=arm-oe-linux-gnueabi-ld LDXX=arm-oe-linux-gnueabi-g++ AR=arm-oe-linux-gnueabi-ar STRIP=arm-oe-linux-gnueabi-strip CPP=arm-oe-linux-gnueabi-cpp PREFIX=/home/workspace/test/arm_install PROTOBUF_CONFIG_OPTS="--host=arm-oe-linux-gnueabi --with-protoc=/usr/local/bin/protoc"

压缩成功:

后面百度一下,查找资料发现其实可以单独使用命令来对已经编译完的动态库进行压缩。测试发现libgrpc.so.9没有变化,那么说明它编译过程中已经有strip过了。
man strip

再查看交叉编译的arm-oe-linux-gnueabi-strip.

原来arm-oe-linux-gnueabi-strip并不是压缩库而是去除一些调试信息和符号信息。

为了保证动态库正常使用,使用–strip-unneeded。删除所有不需要重新定位的符号。保留一些可用的符号。

哎,之前没搞过,原来只要一条命令就解决的问题。
arm-oe-linux-gnueabi-strip --strip-unneeded libgrpc++_reflection.so


库大小的问题算是解决了,开始看看example源码学习下grpc与protobuf如何使用吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章