使用git clone下载protobuf的源代码,然后git checkout到branch2.7.0:
编译protobuf,先在代码顶层目录执行./configure,然后执行make,成功后执行sudo ldconfig,重新加载动态库。
经过试验发现,使用protoc编译onnx.proto,需要特别注意版本问题,使用3.5.1的版本,编译都会失败,而且中途会有提示gcc版本过低的错误信息,在4.9一下都不支持之类的信息,这个时候去升级gcc版本到了5.5,回来发现问题依然存在。最后使用的protoc版本是2.7.0,这是通过冲git上将master源代码下载下来,然后使用git chekout branch的方式,进行源代码编译安装完成的。
如果系统中原来通过pip或者apt-get之类的工具安装过protobuf,那么系统会在/usr/bin/下安装protoc,在/usr/lib/下安装有libprotbuf*等so文件,这个时候可以直接将这些文件全部rm -fr。因为linux搜索二进制文件和so文件的顺序是先搜索/usr/bin/, /usr/lib/,然后再搜索/usr/local/bin/, /usr/local/lib,而采用源代码编译、安装的protobuf工具会将这些二进制文件和so文件释放到/usr/local/bin和/usr/local/lib目录下,这个时候/usr/bin/以及/usr/lib下的protoc和libprotobuf*so已经被删除掉,所以就会到/usr/local/bin和/usr/local/lib下去寻找对应的文件。
原文地址:https://www.cnblogs.com/justinzhang/p/9007291.html