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

在将使用CMake管理的静态库.a转换为动态库.so时,遇到链接错误,提示需要重新编译中间文件添加-fPIC选项。通过在CMakeList中添加add_compile_options(-fPIC),清理并重新编译,成功生成了符合需求的.so文件。
摘要由CSDN通过智能技术生成

现象:

/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文件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值