使用-fPIC选项编译出protobuf静态库libprotobuf.a

原创 2017年06月22日 20:45:35

        用的64位Ubuntu系统,开发一个共享库so使用到了protobuf,如果链接libprotobuf.so就需要一起打包带走,否则可能因protobuf版本较多出现版本不匹配的问题,所以需要它链接静态库libprotobuf.a,但是链接时候报错:  relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC。


        原因是我用了protobuf的默认编译安装方式安装的,也即是autogen.sh、confiure、make && make install的步骤,如此生成的静态库libprotobuf.a不是PIC object,所以不能被其它动态库使用(因64位的so必须使用-fPIC编译选项,所有要求所链接的静态库也必须是带-fPIC编译)。


        解决办法是在confiure步骤时加上两个变量参数:./configure CFLAGS="-fPIC"  CXXFLAGS="-fPIC"



安装protobuf可能遇到的问题

1. 执行./configure 出现error,查看config.log文件看看是否缺某些安装软件,我当时g++ 未安装,因为执行文件大多为C++程序,所以出问题。 2.动静态库问题以下是转载 在L...

ios 编译protobuf.a库脚本

转自http://blog.csdn.net/u012703795/article/details/43410681 Protocol Buffers 是googol提供的,一种轻便高效的结构...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

protobuf在使用的时候使用静态链接库方式

protobuf默认安装的时候,configure使用的是使用动态链接库的方式进行安装和使用的,在使用过程中,会报出这个错误: [libprotobuf ERROR google/protobuf/d...

CFLAGS祥解

CFLAGS 是决定 Gentoo 系统效能与稳定的关键之一。恰当的 CFLAGS 能在效能、编译时间、与系统稳定度中取得平衡,失败的 CFLAGS 可能导致编译失败,甚至系统损毁。那么,在茫茫 CF...
  • collide
  • collide
  • 2004年12月28日 09:49
  • 17990

静态库也需 -fPIC

在solaris系统上编译一静态库如果不加-fPIC,则连接该库的程序无法运行,加了才运行正常。...
  • lifemap
  • lifemap
  • 2013年10月12日 20:34
  • 3030

动静态库编译及“-fpic 可重定位”

动静态库编译及“-fpic 可重定位” 编译动态库所用命令形式如下: gcc (-fpic) -shared -o libmyfunction.so(目标库名称)  myfunct...

boost中静态库编译没有-fPIC选项的问题解决方案

boost中静态库编译没有-fPIC选项的问题解决方案 序章:问题     使用libboostpython.so动态链接是没有问题的,但是使用libboostpython.a静态链接,会...

LINUX下动态库调用静态库的方法

LINUX下动态库调用静态库的方法 有这样一种情形,在创建一个动态库的同时,可能会调用一个静态库,这个静态库可能是你自己写的,也可能是第三方的。比如有下面五个文件,生成一个静态库,一个动态库,一个执...

boost 静态库编译时不带-fPIC选项的一种解决方法

boost 静态库编译时不带-fPIC选项的一种解决方法
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用-fPIC选项编译出protobuf静态库libprotobuf.a
举报原因:
原因补充:

(最多只允许输入30个字)