在linux系统使用protobuf教程

本文详细介绍了在Linux系统中使用protobuf时遇到的静态库和动态库的构建问题,包括编译protobuf时需添加-fPIC选项以解决静态库无法用于生成动态库的错误,以及如何处理多个动态库引用同一.proto文件时的冲突问题。通过实例分享了解决方案,旨在为后来者提供参考。
摘要由CSDN通过智能技术生成

最近有一个项目需要在linux系统下使用protobuf,由于在linux系统下的开发经验不足,所以踩了好多坑;因此记录下来,一来以后自己可以查看,二来希望对后来者有帮助。

一.使用静态库(默认生成方式)

也是自己太嫩了,上来就按照开源代码的惯用使用套路上来就是怼;

1.下载源代码:(e.g,官网、github)

2.mkdir cmake/build && cd cmake/build && cmake .. && make && sudo make install

ok,至此我们已经有了需要的头文件件和静态库。接下来可以搞事情了。

1.定义proto文件;

2.在项目中引用生成的源码;

3.编译动态库;

问题出现在第3步,如下错误

relocation R_X86_64_32...

问题原因:在protobuf编译的时候没有使用-fPIC选项,导致protobuf的静态库无法用于生成动态库。

二.使用动态库

在遇到上面的问题后,我想使用静态库那么麻烦,还是直接使用动态库吧。在查看CMakeLists.txt后。我在cmake命令中添加了如下参数BUILD_SHARED_LIBS:BOOL=TRUE。即

mkdir cmake/build && cd cmake/build && cmake BUILD_SHARED_LIBS:BOOL=TRUE .. &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值