__pthread_key_create@@GLIBC_2.2.5‘ can not be used when making a shared object

现象:

/opt/rh/devtoolset-10/root/usr/libexec/gcc/x86_64-redhat-linux/10/ld: ../Api/libYffSpeedTradeApi.a(ITradeApiHandler.cpp.o): relocation R_X86_64_32 against symbol `__pthread_key_create@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
 

目的:

工作目录中包含一个点.a静态库文件,最终想用Makefile把.a编译包含生成一个.so文件,编译中遇到上边问题

定位分析:

网上很多讲的也没错,是需要在编译中间.o文件时,添加-fPIC命令,但是我.a文件用的是cmakelist管理的

最终解决方案:

在.a的cmakelist添加

add_compile_options(-fPIC)

重新生成。a文件,最后make clean, 再make,完美生成.so文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值