ubuntuOpenCV, Libjpegcodecs.so,提示 relocation R_X86_64_32 can not be used,recompile with -fPIC

ubuntu16.04&&OpenCV3.4.1安装(https://blog.csdn.net/cocoaqin/article/details/78163171  参考这位大侠 cocoaqin 的教程),在安装过程中,遇到

Libjpegcodecs.so文件链接不成功,提示, relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC 原因是/usr/local/libjpeg.a 没有在预编译时候用 “-fPIC”编译, 

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

     https://blog.csdn.net/sdghchj/article/details/73610949(参考这位大侠的文章 sdghchj )

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

1:重新下载 jpegsrc.v9c.tar.gz

2:在Ubuntu 中tar -zxvf jpegsrc.v9c.tar.gz:解压,切换到jpeg-9c/路径然后看到 configure文件

3:./configure CFLAGS="-fPIC"  CXXFLAGS="-fPIC" (主要的是fPIC预编译)

4:make -j4 (后面是2,4,8的看自己电脑多少核去了)

5:这个时候在当前目录下生成了一堆的 .o文件啥的,这个时候小伙子你还有最关键的一步没有做,成功近在咫尺,看如下

6:make install,稍等片刻后,你就 cd /usr/local/lib 路径可以ls 看到里面就有新生成的libjpeg.a覆盖原先的ls -al 可以看到生成文件生成时间,然后大胆用吧man

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值