如果我想通过gcc编译一个动态库,我需要使用- static吗?带“-static”和不带“-static”有什么区别

tnkciper  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(121)

-static和没有-static有什么区别
当我使用gcc编译-static共享库时,
我得到一个错误

/usr/sbin/ld.gold: error: /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/crtbeginT.o: requires dynamic R_X86_64_32 reloc against '__TMC_END__' which may overflow at runtime; recompile with -fPIC

当我用Google搜索这个错误的解决方案时,我发现这似乎是一个经典的问题。
如果我想让它工作,我应该这样做。

cp crtbeginS.o crtbeginT.o

那么,如果我用gcc编译一个动态库,有-static和没有-static有什么区别呢?
我应该用-static编译一个共享库吗?
顺便说一下,当我使用cc_shared_libray在bazel中构建共享库时,也出现了这个错误,似乎cc_shared_library默认使用-static编译共享库

相关问题