使用-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...

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

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

CFLAGS祥解

CFLAGS 是决定 Gentoo 系统效能与稳定的关键之一。恰当的 CFLAGS 能在效能、编译时间、与系统稳定度中取得平衡,失败的 CFLAGS 可能导致编译失败,甚至系统损毁。那么,在茫茫 CF...

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

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

ubuntu下编译protobuf

1.下载protobuf 下载地址:http://code.google.com/p/protobuf/downloads/list 2.编译protobuf 解压下载的zip包,cd到...

protobuf如何用proto文件导出C++代码文件及链接protobuf静态库问题

【一】.如何用.proto文件导出C++代码 之前把protobuf编好了,迫不及待写个小程序试一下 当protobuf编译安装完成后,就可以在命令行下任何目录输入命令: protoc pr...

protobuf如何用proto文件导出C++代码文件及链接protobuf静态库问题

protobuf如何用proto文件导出C++代码文件及链接protobuf静态库问题 【一】.如何用.proto文件导出C++代码 之前把protobuf编好了,迫不及待写个小程序试一下...

linux系统上编译arm版的protobuf库

从官网下载protobuf-2.6.0.tar.gz. 第一步是编译出x86版的库和protoc, 按顺序执行下列命令 tar -zxvf protobuf-2.5.0.tar.gz ...

Protobuf 的安装使用总结

ProtoBuf的官方下载包并不包含jar文件,需要用户自己来自行编译。 下载  protobuf-2.5.0.tar.gz (ProtoBuf的源文件(包含了C++/Java/Python)的源文...

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

序章:问题     使用libboostpython.so动态链接是没有问题的,但是使用libboostpython.a静态链接,会产生如下错误: /usr/bin/ld: libboost_...
  • ccchu
  • ccchu
  • 2012-08-17 22:23
  • 2311
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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