现象:
/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文件