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

        用的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"



阅读更多
个人分类: c++开发
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭